diff options
Diffstat (limited to 'tests/objects/tobjpragma.nim')
-rw-r--r-- | tests/objects/tobjpragma.nim | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/objects/tobjpragma.nim b/tests/objects/tobjpragma.nim new file mode 100644 index 000000000..789b3ec4e --- /dev/null +++ b/tests/objects/tobjpragma.nim @@ -0,0 +1,53 @@ +discard """ + output: ''' +2 +3 +9 +257 +1 +2 +3 +''' +disabled: "true" +""" + +# Disabled since some versions of GCC ignore the 'packed' attribute + +# Test + +type + Foo {.packed.} = object + a: int8 + b: int8 + + Bar {.packed.} = object + a: int8 + b: int16 + + Daz {.packed.} = object + a: int32 + b: int8 + c: int32 + + +var f = Foo(a: 1, b: 1) +var b: Bar +var d: Daz + +echo sizeof(f) +echo sizeof(b) +echo sizeof(d) +echo (cast[ptr int16](f.addr)[]) + +type + Union {.union.} = object + a: int8 + b: int8 + +var u: Union +u.a = 1 +echo u.b +u.a = 2 +echo u.b +u.b = 3 +echo u.a |