[Issue 3271] New: Struct initializers silently fail

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Aug 29 08:45:37 PDT 2009


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

           Summary: Struct initializers silently fail
           Product: D
           Version: 2.031
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: nfxjfg at gmail.com


The following example seems to show, that dmd 2.031 generates invalid code for
struct initializers. Test.X contains an empty string instead of "4", and the
assertion fails. Amusingly, when using opCall and CTFE instead, it seems to
work (version BUG disabled).

PS: the unreduced version of this code also failed under dmd 1.0xx (don't know
which version exactly). But this reduced example seems to work under dmd 1.046.

Code:

version = BUG;

struct Test {
    version (BUG) {
        static enum Test X = {value:"4"};
    } else {
        static enum Test X = Test("4");
    }

    string value = "";
}

void main() {
    Test x;
    assert(x.X.value == "4");
}

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


More information about the Digitalmars-d-bugs mailing list