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

--- Comment #0 from Don <> 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:
------- You are receiving this mail because: -------

Reply via email to