diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2019-05-24 18:33:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-24 18:33:53 +0200 |
commit | ef8ddef47b6ea10c6e5e504165245ab514391056 (patch) | |
tree | aa1d68dfd81bef608f033af9b25daba96e97e613 /tests/method/tsingle_methods.nim | |
parent | d67a9f024eeeb2bc26fb38a98be9a53956003290 (diff) | |
download | Nim-ef8ddef47b6ea10c6e5e504165245ab514391056.tar.gz |
fixes #10912 (#11317)
* fixes #10912 * update the tutorial examples
Diffstat (limited to 'tests/method/tsingle_methods.nim')
-rw-r--r-- | tests/method/tsingle_methods.nim | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/method/tsingle_methods.nim b/tests/method/tsingle_methods.nim new file mode 100644 index 000000000..40269559a --- /dev/null +++ b/tests/method/tsingle_methods.nim @@ -0,0 +1,48 @@ +discard """ + cmd: "nim c --multimethods:off $file" + output: '''base +base +base +base +base +base +''' +""" + +# bug #10912 + +type + X = ref object of RootObj + +type + A* = ref object of RootObj + B* = ref object of A + C* = ref object of A + D* = ref object of A + E* = ref object of A + F* = ref object of A + +method resolve(self: var X, stmt: A) {.base.} = echo "base" + +proc resolveSeq*(self: var X, statements: seq[A]) = + for statement in statements: + resolve(self, statement) + +method resolve(self: var X, stmt: B) = + echo "B" + +method resolve(self: var X, stmt: D) = + echo "D" + +method resolve(self: var X, stmt: E) = + echo "E" + +method resolve(self: var X, stmt: C) = + echo "C" + +method resolve(self: var X, stmt: F) = + echo "F" + +var x = X() +var a = @[A(), B(), C(), D(), E(), F()] +resolveSeq(x, a) |