comparison test/union7.d @ 88:058d3925950e trunk

[svn r92] Fixed support for statically initialized unions. lots of bugfixes as cleanups too.
author lindquist
date Tue, 06 Nov 2007 10:03:14 +0100
parents
children
comparison
equal deleted inserted replaced
87:25d4fcce53f4 88:058d3925950e
1 module union7;
2
3 pragma(LLVM_internal, "notypeinfo")
4 struct Union
5 {
6 union {
7 double g;
8 struct {
9 short s1,s2,s3,s4;
10 }
11 }
12 union {
13 float f;
14 long l;
15 }
16 }
17
18 Union a = { f:4f };
19 Union b = { 3.0, f:2 };
20 Union c = { l:42, g:2.0 };
21 Union d = { s2:3 };
22 Union e = { s1:3, s4:4, l:5 };
23
24 void main()
25 {
26 assert(a.f == 4f);
27 assert(a.g !<>= 0.0);
28 assert((a.l>>>32) == 0);
29
30 assert(b.g == 3.0);
31 assert(b.f == 2f);
32
33 assert(c.l == 42);
34 assert(c.g == 2.0);
35
36 assert(d.s1 == 0);
37 assert(d.s2 == 3);
38 assert(d.s3 == 0);
39 assert(d.s4 == 0);
40 {assert(d.f !<>= 0f);}
41 {}
42 assert(e.s1 == 3);
43 assert(e.s2 == 0);
44 assert(e.s3 == 0);
45 {assert(e.s4 == 4);}
46 {}
47 assert(e.l == 5);
48 }