summary refs log tree commit diff stats
path: root/tests/vm
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2019-07-12 12:15:30 +0200
committerAraq <rumpf_a@web.de>2019-07-12 12:15:30 +0200
commit7606efc0bf57028fecc9f3295b62516eafa38e48 (patch)
tree9eb60e7caf2dd5a5e5f6f6ff528c1f3d11e9589c /tests/vm
parent6d125da93f54a681561ffd428ac0b6aeb132aefd (diff)
downloadNim-7606efc0bf57028fecc9f3295b62516eafa38e48.tar.gz
[bugfix] VM: finally do inheritance properly
Diffstat (limited to 'tests/vm')
-rw-r--r--tests/vm/tinheritance.nim34
1 files changed, 24 insertions, 10 deletions
diff --git a/tests/vm/tinheritance.nim b/tests/vm/tinheritance.nim
index a94ccafcd..2a98ed923 100644
--- a/tests/vm/tinheritance.nim
+++ b/tests/vm/tinheritance.nim
@@ -1,6 +1,7 @@
 discard """
-  nimout: '''Hello fred , managed by sally
-Hello sally , managed by bob'''
+  nimout: '''Hello fred, managed by sally
+Hello sally, managed by bob
+0'''
 """
 # bug #3973
 
@@ -10,20 +11,20 @@ type
     ecCode2
 
   Person* = object of RootObj
-    name* : string
+    name*: string
     last_name*: string
 
   Employee* = object of Person
-    empl_code* : EmployeeCode
-    mgr_name* : string
+    empl_code*: EmployeeCode
+    mgr_name*: string
 
 proc test() =
   var
     empl1 = Employee(name: "fred", last_name: "smith", mgr_name: "sally", empl_code: ecCode1)
     empl2 = Employee(name: "sally", last_name: "jones", mgr_name: "bob", empl_code: ecCode2)
 
-  echo "Hello ", empl1.name, " , managed by ", empl1.mgr_name
-  echo "Hello ", empl2.name, " , managed by ", empl2.mgr_name
+  echo "Hello ", empl1.name, ", managed by ", empl1.mgr_name
+  echo "Hello ", empl2.name, ", managed by ", empl2.mgr_name
 
 static:
   test()
@@ -50,13 +51,13 @@ template check_templ(n: Base, k: MyKind) =
   if k == kA: doAssert(n of A) else: doAssert(not (n of A))
   if k in {kB, kC}: doAssert(n of B) else: doAssert(not (n of B))
   if k == kC: doAssert(n of C) else: doAssert(not (n of C))
-  doAssert(n of Base) 
+  doAssert(n of Base)
 
 proc check_proc(n: Base, k: MyKind) =
   if k == kA: doAssert(n of A) else: doAssert(not (n of A))
   if k in {kB, kC}: doAssert(n of B) else: doAssert(not (n of B))
   if k == kC: doAssert(n of C) else: doAssert(not (n of C))
-  doAssert(n of Base) 
+  doAssert(n of Base)
 
 static:
   let aa = new(A)
@@ -68,7 +69,7 @@ static:
   let cc = new(C)
   check_templ(cc, kC)
   check_proc(cc, kC)
-    
+
 let aa = new(A)
 check_templ(aa, kA)
 check_proc(aa, kA)
@@ -78,3 +79,16 @@ check_proc(bb, kB)
 let cc = new(C)
 check_templ(cc, kC)
 check_proc(cc, kC)
+
+type
+  BBar = object of RootObj
+    bbarField: set[char]
+    xbarField: string
+    d, e: int
+  FooBar = object of BBar
+    a: int
+    b: string
+
+static:
+  var fb: FooBar
+  echo fb.a