parent
d7eb146d28
commit
fce4b7cd62
2 changed files with 43 additions and 1 deletions
|
|
@ -472,7 +472,7 @@ proc replaceTypeVarsTAux(cl: var TReplTypeVars, t: PType): PType =
|
||||||
var r = replaceTypeVarsT(cl, result.sons[i])
|
var r = replaceTypeVarsT(cl, result.sons[i])
|
||||||
if result.kind == tyObject:
|
if result.kind == tyObject:
|
||||||
# carefully coded to not skip the precious tyGenericInst:
|
# carefully coded to not skip the precious tyGenericInst:
|
||||||
let r2 = r.skipTypes({tyGenericInst, tyAlias})
|
let r2 = r.skipTypes({tyAlias})
|
||||||
if r2.kind in {tyPtr, tyRef}:
|
if r2.kind in {tyPtr, tyRef}:
|
||||||
r = skipTypes(r2, {tyPtr, tyRef})
|
r = skipTypes(r2, {tyPtr, tyRef})
|
||||||
result.sons[i] = r
|
result.sons[i] = r
|
||||||
|
|
|
||||||
42
tests/generics/tobjecttyperel2.nim
Normal file
42
tests/generics/tobjecttyperel2.nim
Normal file
|
|
@ -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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue