On Friday, 5 December 2014 at 00:32:32 UTC, Walter Bright wrote:
On 12/4/2014 3:04 PM, deadalnix wrote:
So as mentioned, there are various problem with this DIP :
- rvalue are defined as having a scope that goes to the end of the statement.
That mean they can never be assigned to anything as per spec.

I don't believe this is correct. Rvalues can be assigned, just like:

   __gshared int x;
   { int i; x = i; }

i's scope ends at the } but it can still be assigned to x.


It work even better when i has indirections.

- It add more special casing with & (as if it wasn't enough of a mess with @property, optional () and the fact the function aren't first class). For
instance *e has infinite lifetime when &(*e) is lifetime(e).

That's right. I know you're worried about that, but I still don't see it as an actual problem. (The optimizer makes use of this special case all the time.)


Yes, this is the job of the optimizer to do this kind of stunt.
Not the semantic analysis.

Also, considering *e has infinite lifetime, (but not e[i] ???)

e[i] should be same as *e, unless e is a literal or tuple.


Ho I missed the *. Sorry for that.

what is the point of scope at all ? If all indirection goes to infinite lifetime (ie GC) then lifetime only apply to local variable and it should not be able to escape these,
scope or not.

I originally had scope only apply to ref, but that made having scoped classes impossible.


Promoting scoped class on stack is an ownership problem, and out
of scope (!). It make sense to allow it as an optimization.

Problem is, lifetime goes to infinite after indirection, so I'm
not sure what the guarantee is.


During discussion, I proposed to differentiate lifetime calculation between lvalues and rvalues (which are inherently different beasts with different lifetime) and carry (or not) the scope flag with each expression.

I'm not sure how that would be different from the DIP as it stands now.

I cause everything reached through the view to be scope and
obliviate the need for things like &(*e) having special meaning.

Reply via email to