diff options
author | andri lim <jangko128@gmail.com> | 2017-04-01 02:58:09 +0700 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-03-31 21:58:09 +0200 |
commit | fce4b7cd6216cb1f3f195cfdefc4c16da37958fd (patch) | |
tree | f108e065b390acc2ea3a2c04c2b231f9a9ff4370 /tests | |
parent | d7eb146d28515e9aea5ae0f98e01b09bd96b5919 (diff) | |
download | Nim-fce4b7cd6216cb1f3f195cfdefc4c16da37958fd.tar.gz |
attempt to fix #5621 #5615 generic ref object typeRel (#5633)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/generics/tobjecttyperel2.nim | 42 |
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 |