Summary: bad function/delegate literal generated into header
           Product: D
           Version: 2.032
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD

--- Comment #0 from Rainer Schuetze <> 2009-09-07 23:42:31 
PDT ---
While trying to compile tango with dmd 1.046, I ran into the a problem with the
di-header generated for atomic.d. A reduced version that reproduces the bug in
dmd 2.032 aswell is


int foo(int function() fn)
    return fn();

int bar(T)()
    return foo(function int (){ return 0; });

>dmd -c -H test.d

>dmd -c test.di
test.di(10): found 'function' when expecting '.' following 'int'
test.di(10): found '(' when expecting identifier following 'int.'
test.di(11): found '{' when expecting ';' following 'return statement'
test.di(14): Declaration expected, not ')'
test.di(16): unrecognized declaration

This is caused by a wrong function literal being generated into the di-file:

// D import file generated from 'test.d'
int foo(int function() fn)
return fn();
template bar(T)
int bar()
return foo(int function()
return 0;

Note the difference "foo(int function()..." and "foo(function int ()...".

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to