diff options
author | Arne Döring <arne.doering@gmx.net> | 2018-11-18 14:36:20 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-11-18 14:36:20 +0100 |
commit | 5dfcc4e91ca38362e417b29becfa5c0e638c3d78 (patch) | |
tree | 73253e444d23abcadd61eef976b433ef20545593 /tests/misc | |
parent | 696dc1609fd6eabfbce9ace81908ff4424c52e8c (diff) | |
download | Nim-5dfcc4e91ca38362e417b29becfa5c0e638c3d78.tar.gz |
make tsizeof run on C++ backend (#9734)
Diffstat (limited to 'tests/misc')
-rw-r--r-- | tests/misc/tsizeof.nim | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/tests/misc/tsizeof.nim b/tests/misc/tsizeof.nim index 2830a545f..dddb7dd58 100644 --- a/tests/misc/tsizeof.nim +++ b/tests/misc/tsizeof.nim @@ -48,7 +48,7 @@ macro testOffsetOf(a,b1,b2: untyped): untyped = c_offset = c_offsetof(`a`,`b1`) nim_offset = offsetof(`a`,`b2`) if c_offset != nim_offset: - echo `typeName`, ".", `member`, " offset: ", c_offset, " != ", nim_offset + echo `typeName`, ".", `member`, " offsetError, C: ", c_offset, " nim: ", nim_offset template testOffsetOf(a,b: untyped): untyped = testOffsetOf(a,b,b) @@ -101,21 +101,6 @@ macro testAlign(arg:untyped):untyped = if cAlign != nimAlign: echo `prefix`, cAlign, " != ", nimAlign -testAlign(pointer) -testAlign(int) -testAlign(uint) -testAlign(int8) -testAlign(int16) -testAlign(int32) -testAlign(int64) -testAlign(uint8) -testAlign(uint16) -testAlign(uint32) -testAlign(uint64) -testAlign(float) -testAlign(float32) -testAlign(float64) - type MyEnum {.pure.} = enum ValueA @@ -142,14 +127,6 @@ type ValueA ValueB -testAlign(MyEnum) -testAlign(OtherEnum) -testAlign(Enum1) -testAlign(Enum2) -testAlign(Enum4) -testAlign(Enum8) - - template testinstance(body: untyped): untyped = block: {.pragma: objectconfig.} @@ -159,6 +136,32 @@ template testinstance(body: untyped): untyped = {.pragma: objectconfig, packed.} body + +proc testPrimitiveTypes(): void = + testAlign(pointer) + testAlign(int) + testAlign(uint) + testAlign(int8) + testAlign(int16) + testAlign(int32) + testAlign(int64) + testAlign(uint8) + testAlign(uint16) + testAlign(uint32) + testAlign(uint64) + testAlign(float) + testAlign(float32) + testAlign(float64) + + testAlign(MyEnum) + testAlign(OtherEnum) + testAlign(Enum1) + testAlign(Enum2) + testAlign(Enum4) + testAlign(Enum8) + +testPrimitiveTypes() + testinstance: type @@ -274,8 +277,6 @@ testinstance: const trivialSize = sizeof(TrivialType) # needs to be able to evaluate at compile time - testAlign(SimpleAlignment) - proc main(): void = var t : TrivialType var a : SimpleAlignment @@ -286,6 +287,7 @@ testinstance: var f : PaddingAfterBranch var g : RecursiveStuff var ro : RootObj + var e1: Enum1 e2: Enum2 @@ -295,6 +297,8 @@ testinstance: eoa: EnumObjectA eob: EnumObjectB + testAlign(SimpleAlignment) + testSizeAlignOf(t,a,b,c,d,e,f,g,ro, e1, e2, e4, e8, eoa, eob) testOffsetOf(TrivialType, x) @@ -322,11 +326,11 @@ testinstance: testOffsetOf(Foobar, c) - testOffsetOf(Bazing, a) - - testOffsetOf(InheritanceA, a) - testOffsetOf(InheritanceB, b) - testOffsetOf(InheritanceC, c) + when not defined(cpp): + testOffsetOf(Bazing, a) + testOffsetOf(InheritanceA, a) + testOffsetOf(InheritanceB, b) + testOffsetOf(InheritanceC, c) testOffsetOf(EnumObjectA, a) testOffsetOf(EnumObjectA, b) |