diff test/union5.d @ 76:9e1bd80a7e98 trunk

[svn r80] Fixed union literals
author lindquist
date Wed, 31 Oct 2007 07:24:02 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/union5.d	Wed Oct 31 07:24:02 2007 +0100
@@ -0,0 +1,39 @@
+module union5;
+
+pragma(LLVM_internal, "notypeinfo")
+{
+    union S
+    {
+        T t;
+        U u;
+        uint i;
+        struct {
+            ushort sl,sh;
+        }
+    }
+
+    struct T
+    {
+        int i;
+    }
+
+    struct U
+    {
+        float f;
+    }
+}
+
+void main()
+{
+    S s;
+    assert(s.t.i == 0);
+    assert(s.u.f == 0);
+    s.t.i = -1;
+    assert(s.i == 0xFFFF_FFFF);
+    float f = 3.1415;
+    s.u.f = f;
+    uint pi = *cast(uint*)&f;
+    assert(s.i == pi);
+    assert(s.sl == (pi&0xFFFF));
+    assert(s.sh == (pi>>>16));
+}