diff options
author | Araq <rumpf_a@web.de> | 2011-11-19 15:45:51 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-11-19 15:45:51 +0100 |
commit | a274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82 (patch) | |
tree | 95dc5bf7fe3716a3ab266f78094fccce38c94ccf /tests/run/tmultim1.nim | |
parent | d0772feb08baaea12bfdad0a7c20a41733f977bd (diff) | |
download | Nim-a274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82.tar.gz |
got rid of 'accept' dir in the tests
Diffstat (limited to 'tests/run/tmultim1.nim')
-rwxr-xr-x | tests/run/tmultim1.nim | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/run/tmultim1.nim b/tests/run/tmultim1.nim new file mode 100755 index 000000000..542c846c7 --- /dev/null +++ b/tests/run/tmultim1.nim @@ -0,0 +1,29 @@ +discard """ + file: "tmultim1.nim" + output: "7" +""" +# Test multi methods + +type + TExpr = object + TLiteral = object of TExpr + x: int + TPlusExpr = object of TExpr + a, b: ref TExpr + +method eval(e: ref TExpr): int = quit "to override!" +method eval(e: ref TLiteral): int = return e.x +method eval(e: ref TPlusExpr): int = return eval(e.a) + eval(e.b) + +proc newLit(x: int): ref TLiteral = + new(result) + result.x = x + +proc newPlus(a, b: ref TExpr): ref TPlusExpr = + new(result) + result.a = a + result.b = b + +echo eval(newPlus(newPlus(newLit(1), newLit(2)), newLit(4))) #OUT 7 + + |