www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 12056] New: [CTFE] "couldn't find field" from delegate


           Summary: [CTFE] "couldn't find field" from delegate
           Product: D
           Version: unspecified
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: CTFE, rejects-valid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: nilsbossung googlemail.com

--- Comment #0 from Nils <nilsbossung googlemail.com> 2014-02-01 10:44:32 PST
cat > test.d << code
struct A
    void call(void delegate() dg) {dg();}

struct B
    int f;
    void m()
        A a;
        a.call({auto err = f;});

bool go()
    B b;
    return true;

static assert(go()); 
dmd -c test.d
test.d(12): Error: couldn't find field f of type int in A()
test.d(3):        called from here: dg()
test.d(12):        called from here: a.call(delegate ()
int err = this.f;
test.d(19):        called from here: b.m()
test.d(23):        called from here: go()
test.d(23):        while evaluating: static assert(go())

The error message says "couldn't find field [...] in A()", when the field
should be looked up in B. The error remains the same even when a field f is
added to A.

This also affects opApply.

Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Feb 01 2014