view 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 source

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));
}