summary refs log tree commit diff stats
path: root/tests/method/tsingle_methods.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2019-05-24 18:33:53 +0200
committerGitHub <noreply@github.com>2019-05-24 18:33:53 +0200
commitef8ddef47b6ea10c6e5e504165245ab514391056 (patch)
treeaa1d68dfd81bef608f033af9b25daba96e97e613 /tests/method/tsingle_methods.nim
parentd67a9f024eeeb2bc26fb38a98be9a53956003290 (diff)
downloadNim-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.nim48
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)