diff options
author | Araq <rumpf_a@web.de> | 2019-07-12 12:15:30 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2019-07-12 12:15:30 +0200 |
commit | 7606efc0bf57028fecc9f3295b62516eafa38e48 (patch) | |
tree | 9eb60e7caf2dd5a5e5f6f6ff528c1f3d11e9589c /tests/vm | |
parent | 6d125da93f54a681561ffd428ac0b6aeb132aefd (diff) | |
download | Nim-7606efc0bf57028fecc9f3295b62516eafa38e48.tar.gz |
[bugfix] VM: finally do inheritance properly
Diffstat (limited to 'tests/vm')
-rw-r--r-- | tests/vm/tinheritance.nim | 34 |
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 |