www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 10741] New: A delegate in a variable initializer cannot see the variable

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10741

           Summary: A delegate in a variable initializer cannot see the
                    variable
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: andrej.mitrovich gmail.com



12:05:25 PDT ---
This is an interesting limitation:

-----
struct Foo
{
    this(void delegate()) { }
    void test() { }
}

void main()
{
    Foo foo1;
    foo1 = Foo({ foo1.test(); });  // ok

    Foo foo2 = Foo({ foo2.test(); });  // L14: error
}
-----

$ dmd test.d
 test.d(14): Error: undefined identifier foo2, did you mean variable foo1?
It seems the delegate cannot see the 'foo2' variable yet. I'm not sure if there would be any problems making this work? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Aug 01 2013
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=10741


Maxim Fomin <maxim maxim-fomin.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |maxim maxim-fomin.ru



---
Yes, because a declaration with initializer is not finished in the point of
initializer. This is a basic feature in D.

void main()
{
     ((int i)=>a) int a;      //error
    auto b = { return b; } ;  //error
} 

However nothing is wrong with making this limitation gone.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Aug 01 2013