mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-04-05 03:19:03 +02:00
[svn r92] Fixed support for statically initialized unions. lots of bugfixes as cleanups too.
This commit is contained in:
26
test/bug51.d
Normal file
26
test/bug51.d
Normal file
@@ -0,0 +1,26 @@
|
||||
module bug51;
|
||||
|
||||
import std.stdint;
|
||||
|
||||
union in6_addr
|
||||
{
|
||||
private union _in6_u_t
|
||||
{
|
||||
uint8_t[16] u6_addr8;
|
||||
uint16_t[8] u6_addr16;
|
||||
uint32_t[4] u6_addr32;
|
||||
}
|
||||
_in6_u_t in6_u;
|
||||
|
||||
uint8_t[16] s6_addr8;
|
||||
uint16_t[8] s6_addr16;
|
||||
uint32_t[4] s6_addr32;
|
||||
}
|
||||
|
||||
|
||||
const in6_addr IN6ADDR_ANY = { s6_addr8: [0] };
|
||||
const in6_addr IN6ADDR_LOOPBACK = { s6_addr8: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] };
|
||||
|
||||
void main()
|
||||
{
|
||||
}
|
||||
48
test/union7.d
Normal file
48
test/union7.d
Normal file
@@ -0,0 +1,48 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user