summary refs log tree commit diff stats
path: root/tests/misc
diff options
context:
space:
mode:
authorArne Döring <arne.doering@gmx.net>2018-11-18 14:36:20 +0100
committerAndreas Rumpf <rumpf_a@web.de>2018-11-18 14:36:20 +0100
commit5dfcc4e91ca38362e417b29becfa5c0e638c3d78 (patch)
tree73253e444d23abcadd61eef976b433ef20545593 /tests/misc
parent696dc1609fd6eabfbce9ace81908ff4424c52e8c (diff)
downloadNim-5dfcc4e91ca38362e417b29becfa5c0e638c3d78.tar.gz
make tsizeof run on C++ backend (#9734)
Diffstat (limited to 'tests/misc')
-rw-r--r--tests/misc/tsizeof.nim66
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)