Feature Request: Support delegate literal context skipping

BCS BCS at pathlink.com
Fri Oct 12 11:18:33 PDT 2007


downs wrote:
> In the following situation
> 
> class Foo {
>   int e;
>   void delegate() bar() {
>     return { e++; };
>   }
> }
> 
> the delegate literal will not work. This is because its context is bar,
> and bar has ended. But the literal doesn't *need* anything from bar.
> 
> Because of this, I propose in situations where a delegate literal
> doesn't access the immediate surrounding stack frame, its context be the
> first frame (or class) that it does access.
> So in this example, { e++; } 's .ptr would point at the respective
> instance of Foo, allowing this to work.
> 
> Disadvantages: None
> Advantages: potentially highly helpful with user interface code, where
> such callbacks are commonplace.
> 
>   Looking forward to comments
>  --downs

The way I want it is that a delegate literal can specify the context 
like this.

class Foo {
   int e;
   void delegate() bar() {
     return this.{ e++; };  //note "this."
   }
}



More information about the Digitalmars-d mailing list