fix #18990 Regression in proc symbol resolution; Error: attempting to call routine
This commit is contained in:
parent
fa60378a7f
commit
ea2f2775a7
4 changed files with 9 additions and 2 deletions
|
|
@ -1298,7 +1298,7 @@ proc semProcTypeNode(c: PContext, n, genericParams: PNode,
|
||||||
if hasDefault:
|
if hasDefault:
|
||||||
def = a[^1]
|
def = a[^1]
|
||||||
block determineType:
|
block determineType:
|
||||||
if genericParams.isGenericParams:
|
if genericParams != nil and genericParams.len > 0:
|
||||||
def = semGenericStmt(c, def)
|
def = semGenericStmt(c, def)
|
||||||
if hasUnresolvedArgs(c, def):
|
if hasUnresolvedArgs(c, def):
|
||||||
def.typ = makeTypeFromExpr(c, def.copyTree)
|
def.typ = makeTypeFromExpr(c, def.copyTree)
|
||||||
|
|
@ -1426,7 +1426,7 @@ proc semProcTypeNode(c: PContext, n, genericParams: PNode,
|
||||||
result.flags.excl tfHasMeta
|
result.flags.excl tfHasMeta
|
||||||
result.n.typ = r
|
result.n.typ = r
|
||||||
|
|
||||||
if genericParams.isGenericParams:
|
if genericParams != nil and genericParams.len > 0:
|
||||||
for n in genericParams:
|
for n in genericParams:
|
||||||
if {sfUsed, sfAnon} * n.sym.flags == {}:
|
if {sfUsed, sfAnon} * n.sym.flags == {}:
|
||||||
result.flags.incl tfUnresolved
|
result.flags.incl tfUnresolved
|
||||||
|
|
|
||||||
2
tests/constr/a.nim
Normal file
2
tests/constr/a.nim
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
type A* = object
|
||||||
|
a: uint8
|
||||||
2
tests/constr/b.nim
Normal file
2
tests/constr/b.nim
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
type B* = object
|
||||||
|
proc A*(a, b: float): B = discard
|
||||||
3
tests/constr/t18990.nim
Normal file
3
tests/constr/t18990.nim
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
import a, b
|
||||||
|
discard A(1f, 1f) # works
|
||||||
|
proc x(b = A(1f, 1f)) = discard # doesn't work
|
||||||
Loading…
Add table
Add a link
Reference in a new issue