parent
eec07b4e84
commit
c446c0f57a
2 changed files with 18 additions and 0 deletions
|
|
@ -1942,6 +1942,8 @@ proc localConvMatch(c: PContext, m: var TCandidate, f, a: PType,
|
||||||
|
|
||||||
if result != nil:
|
if result != nil:
|
||||||
if result.typ == nil: return nil
|
if result.typ == nil: return nil
|
||||||
|
# bug #13378, ensure we produce a real generic instantiation:
|
||||||
|
result = c.semExpr(c, call)
|
||||||
# resulting type must be consistent with the other arguments:
|
# resulting type must be consistent with the other arguments:
|
||||||
var r = typeRel(m, f[0], result.typ)
|
var r = typeRel(m, f[0], result.typ)
|
||||||
if r < isGeneric: return nil
|
if r < isGeneric: return nil
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ discard """
|
||||||
0
|
0
|
||||||
float32
|
float32
|
||||||
float32
|
float32
|
||||||
|
(name: "Resource 1", readers: ..., writers: ...)
|
||||||
'''
|
'''
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
@ -124,3 +125,18 @@ block tgeneric5:
|
||||||
echo T
|
echo T
|
||||||
|
|
||||||
bar(0.0'f32)
|
bar(0.0'f32)
|
||||||
|
|
||||||
|
# bug #13378
|
||||||
|
|
||||||
|
type
|
||||||
|
Resource = ref object of RootObj
|
||||||
|
name: string
|
||||||
|
readers, writers: seq[RenderTask]
|
||||||
|
|
||||||
|
RenderTask = ref object
|
||||||
|
name: string
|
||||||
|
|
||||||
|
var res = Resource(name: "Resource 1")
|
||||||
|
|
||||||
|
(proc (r: typeof(res)) =
|
||||||
|
echo r[])(res)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue