[Issue 6439] New: [CTFE] union field are initialized independently

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Aug 5 05:19:00 PDT 2011


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

           Summary: [CTFE] union field are initialized independently
           Product: D
           Version: D2
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: dmitry.olsh at gmail.com


--- Comment #0 from Dmitry Olshansky <dmitry.olsh at gmail.com> 2011-08-05 05:18:59 PDT ---
struct A
{  
    this(uint a, uint b)
    {
    begin = a;
    end = b;
    }
    union
    {
        struct
        {
            uint begin, end;
        }
    uint[2] arr;
    }    
}

void main(){
    enum y = A(10, 20);
    A y2 = A(10, 20); 
    assert(y2.begin == y.begin && y2.end == y.end);  //passes
    assert(y.arr == [0,0]);  //passes, wtf ?!
    assert(y.arr == y2.arr); //fails
}

I dunno what was the last stance on unions in CTFE, but this bug also affects
constfolded globals (which is tricky and nasty). So at minimum it's better to
just reject it.

-- 
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