diff tests/mini/union5.d @ 341:1bb99290e03a trunk

[svn r362] Started merging the old 'test' dir as well as the newer 'tangotests' dir into 'tests/mini' and 'tests/minicomplex'.
author lindquist
date Sun, 13 Jul 2008 02:51:19 +0200
parents test/union5.d@9e1bd80a7e98
children 44f08170f4ef
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/mini/union5.d	Sun Jul 13 02:51:19 2008 +0200
@@ -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));
+}