On Thursday, 25 August 2016 at 15:22:23 UTC, Jack Applegame wrote:
Code:

union A {
    immutable int f;
}

union B {
    immutable int f;
    int e;
}

void main() {
    A a = A(1);
//a = A(2); // a.f is immutable, fails to compile as expected
        
    B b = B(1);
    b = B(2); // compiles!!!
}

It turns out that if the union contains at least one mutable member, then the entire union is considered to be mutable. It's logical, but does it meet the specs? I couldn't find description of this behavior.

This should be fixed pretty soon: https://github.com/dlang/dmd/pull/5940

Reply via email to