summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorandri lim <jangko128@gmail.com>2017-04-01 02:58:09 +0700
committerAndreas Rumpf <rumpf_a@web.de>2017-03-31 21:58:09 +0200
commitfce4b7cd6216cb1f3f195cfdefc4c16da37958fd (patch)
treef108e065b390acc2ea3a2c04c2b231f9a9ff4370 /tests
parentd7eb146d28515e9aea5ae0f98e01b09bd96b5919 (diff)
downloadNim-fce4b7cd6216cb1f3f195cfdefc4c16da37958fd.tar.gz
attempt to fix #5621 #5615 generic ref object typeRel (#5633)
Diffstat (limited to 'tests')
-rw-r--r--tests/generics/tobjecttyperel2.nim42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/generics/tobjecttyperel2.nim b/tests/generics/tobjecttyperel2.nim
new file mode 100644
index 000000000..d8c0751b7
--- /dev/null
+++ b/tests/generics/tobjecttyperel2.nim
@@ -0,0 +1,42 @@
+discard """
+  output: '''1
+a
+13'''
+"""
+
+# bug #5621 #5615
+type
+  Obj5[T] = ref object of RootObj
+    x_impl: T
+
+proc x[T](v476205: Obj5[T]): T {.used.} =
+  v476205.x_impl
+
+type
+  Obj6[T, U] = ref object of Obj5[T]
+    y_impl: U
+
+proc newObj6[T, U](x: T; y: U): Obj6[T, U] =
+  new(result)
+  result.x_impl = x
+  result.y_impl = y
+
+proc x[T, U](v477606: Obj6[T, U]): T {.used.} =
+  v477606.x_impl
+
+proc y[T, U](v477608: Obj6[T, U]): U {.used.} =
+  v477608.y_impl
+
+let e = newObj6(1, "a")
+echo e.x
+echo e.y
+
+type
+  Fruit[T] = ref object of RootObj
+  Apple[T] = ref object of Fruit[T]
+
+proc getColor[T](v: Fruit[T]): T = 13
+
+var w: Apple[int]
+let r = getColor(w)
+echo r