http://d.puremagic.com/issues/show_bug.cgi?id=3575

           Summary: CTFE: member structs not initialized correctly
           Product: D
           Version: 1.051
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Keywords: patch, rejects-valid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: clugd...@yahoo.com.au


--- Comment #0 from Don <clugd...@yahoo.com.au> 2009-12-05 01:54:25 PST ---
This is a couple of cases I missed in my CTFE patches in DMD2.032.
Root cause: defaultInit for a struct is a VarExp, not a StructLiteral. This
needs to be applied recursively. Patch: I've added a recursive
defaultInitAsStructLiteral() to TypeStruct. It needs to be called from two
places in interpret.c.

---------------------------------
struct SwineFlu {
   int a; int b;
}

struct Infection {
    SwineFlu y;
}

struct IveGotSwineFlu {
   Infection x;
   int z;
   int oink() { return x.y.a+10; }   
}

int quarantine() {
   IveGotSwineFlu d;
   return d.oink();
}

struct Mexico {
  Infection x;
  int z=2;
  int oink() { return z+x.y.b; }
}

int mediafrenzy() {
  Mexico m;
  return m.oink;
}

static assert( quarantine() == 10);
static assert( mediafrenzy() == 2);

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

Reply via email to