Bug 9932 – CTFE cannot be used when a struct has "uninitialized" static array union members?

Status
RESOLVED
Resolution
WORKSFORME
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-04-14T11:22:00Z
Last change time
2013-11-22T06:31:02Z
Assigned to
nobody
Creator
simendsjo

Comments

Comment #0 by simendsjo — 2013-04-14T11:22:16Z
Ref: http://forum.dlang.org/thread/[email protected] Related to http://d.puremagic.com/issues/show_bug.cgi?id=8543 ? ---- This is probably not a minimal test-case, and I haven't tested with more types, but it shows the problem. // This works struct S { this(int i) { a = i; } union { int a = void; int b = void; } } unittest { auto s = S(1); assert(&s.a == &s.b); enum s2 = S(1); static assert(S(1).a == 1); } // But this doesn't struct S2 { this(int i) { // error at this line a[] = i; } union { int[1] a = void; int[1] b = void; } } unittest { auto s = S2(1); assert(s.a.ptr == s.b.ptr); // bug.d(19): Error: uninitialized variable 'b' cannot be returned from CTFE enum s2 = S2(1); } void main() { }
Comment #1 by yebblies — 2013-11-22T06:31:02Z
Works now.