Mercurial > projects > ldc
annotate test/union5.d @ 271:1e6e2b5d5bfe trunk
[svn r292] Fixed: string switch was broken in several ways.
Fixed: TypeInfo_Typedef.next was incorrect (return base of base instead of just base).
Fixed: ClassInfo offset type info (offTi) had invalid offsets.
author | lindquist |
---|---|
date | Wed, 18 Jun 2008 21:31:05 +0200 |
parents | 9e1bd80a7e98 |
children |
rev | line source |
---|---|
76 | 1 module union5; |
2 | |
3 pragma(LLVM_internal, "notypeinfo") | |
4 { | |
5 union S | |
6 { | |
7 T t; | |
8 U u; | |
9 uint i; | |
10 struct { | |
11 ushort sl,sh; | |
12 } | |
13 } | |
14 | |
15 struct T | |
16 { | |
17 int i; | |
18 } | |
19 | |
20 struct U | |
21 { | |
22 float f; | |
23 } | |
24 } | |
25 | |
26 void main() | |
27 { | |
28 S s; | |
29 assert(s.t.i == 0); | |
30 assert(s.u.f == 0); | |
31 s.t.i = -1; | |
32 assert(s.i == 0xFFFF_FFFF); | |
33 float f = 3.1415; | |
34 s.u.f = f; | |
35 uint pi = *cast(uint*)&f; | |
36 assert(s.i == pi); | |
37 assert(s.sl == (pi&0xFFFF)); | |
38 assert(s.sh == (pi>>>16)); | |
39 } |