www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17899] New: Cannot initialise contextless delegate at compile


          Issue ID: 17899
           Summary: Cannot initialise contextless delegate at compile time
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: iamthewilsonator hotmail.com

module foo;

void delegate() bar = (){};

complains about requiring a context for the initialisation that is unavailable
at compile time.

The assignment to bar (and all delegates) at compile time has no context (can
only refer to [thread local] globals by value) and so should compile with the
context pointer = null.

This would remove the necessity for module constructors to do the assignment.

It would also solve https://github.com/libmir/dcompute/issues/32 where the
module constructors fail to initialise the delegates properly, which is a
separate issue that I haven't been able to pin down (not yet reported).

Oct 14 2017