Mercurial > projects > ldc
view test/union7.d @ 131:5825d48b27d1 trunk
[svn r135] * Merged DMD 1.025 *
* Fixed a minor linking order mishap *
* Added an command line option -annotate *
* Fixed some problems with running optimizations *
* Added std.stdio and dependencies to lphobos (still not 100% working, but compiles and links) *
* Fixed problems with passing aggregate types to variadic functions *
* Added initial code towards full GC support, currently based on malloc and friends, not all the runtime calls the GC yet for memory *
* Fixed problems with resolving nested function context pointers for some heavily nested cases *
* Redid function argument passing + other minor code cleanups, still lots to do on this end... *
author | lindquist |
---|---|
date | Fri, 04 Jan 2008 01:38:42 +0100 |
parents | 058d3925950e |
children |
line wrap: on
line source
module union7; pragma(LLVM_internal, "notypeinfo") struct Union { union { double g; struct { short s1,s2,s3,s4; } } union { float f; long l; } } Union a = { f:4f }; Union b = { 3.0, f:2 }; Union c = { l:42, g:2.0 }; Union d = { s2:3 }; Union e = { s1:3, s4:4, l:5 }; void main() { assert(a.f == 4f); assert(a.g !<>= 0.0); assert((a.l>>>32) == 0); assert(b.g == 3.0); assert(b.f == 2f); assert(c.l == 42); assert(c.g == 2.0); assert(d.s1 == 0); assert(d.s2 == 3); assert(d.s3 == 0); assert(d.s4 == 0); {assert(d.f !<>= 0f);} {} assert(e.s1 == 3); assert(e.s2 == 0); assert(e.s3 == 0); {assert(e.s4 == 4);} {} assert(e.l == 5); }