[Issue 2043] Closure outer variables in nested blocks are not	allocated/instantiated correctly.
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Thu Aug 14 20:05:25 PDT 2008
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=2043
------- Comment #2 from bugzilla at digitalmars.com  2008-08-14 22:05 -------
Here's a better illustration of the problem:
void delegate() dg;
void main()
{
    foreach(int i; 0 .. 2)
    {
        invariant int b = i;
        if (i == 0)
            dg = { printf("b = %d\n", b); };
        dg();
    }
    dg();
}
'b' is supposed to be invariant, yet its value (as seen by dg()) changes. One
possible fix for this is to make invariants that are initialized with varying
values be illegal to reference from a delegate.
-- 
    
    
More information about the Digitalmars-d-bugs
mailing list