From a274f3bf5be3fc35f1538e5aab0e32fb9ed2ff82 Mon Sep 17 00:00:00 2001 From: Araq Date: Sat, 19 Nov 2011 15:45:51 +0100 Subject: got rid of 'accept' dir in the tests --- tests/run/tmultim1.nim | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 tests/run/tmultim1.nim (limited to 'tests/run/tmultim1.nim') 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 + + -- cgit 1.4.1-2-gfad0