fixes #22971; inferGenericTypes does not work with method call syntax (#22972)

fixes #22971
This commit is contained in:
Pylgos
2023-11-22 15:50:38 +09:00
committed by GitHub
parent 8c56e806ae
commit eba87c7e97
2 changed files with 25 additions and 3 deletions

View File

@@ -1052,7 +1052,7 @@ proc semIndirectOp(c: PContext, n: PNode, flags: TExprFlags; expectedType: PType
result.transitionSonsKind(nkCall)
result.flags.incl nfExplicitCall
for i in 1..<n.len: result.add n[i]
return semExpr(c, result, flags)
return semExpr(c, result, flags, expectedType)
else:
n[0] = n0
else:
@@ -3124,7 +3124,7 @@ proc semExpr(c: PContext, n: PNode, flags: TExprFlags = {}, expectedType: PType
result = semFieldAccess(c, n, flags)
if result.kind == nkDotCall:
result.transitionSonsKind(nkCall)
result = semExpr(c, result, flags)
result = semExpr(c, result, flags, expectedType)
of nkBind:
message(c.config, n.info, warnDeprecated, "bind is deprecated")
result = semExpr(c, n[0], flags, expectedType)

View File

@@ -159,4 +159,26 @@ block:
let res = doStuff()
doAssert res.kind == Error
doAssert res.errVal == "Error"
doAssert res.errVal == "Error"
# ufcs
block:
proc getValue[T](_: string): T =
doAssert T is int
44
proc `'test`[T](_: string): T =
55
let a: int = getValue("")
let b: int = "".getValue()
let c: int = "".getValue
let d: int = getValue ""
let e: int = getValue""
let f: int = 12345'test
doAssert a == 44
doAssert b == 44
doAssert c == 44
doAssert d == 44
doAssert e == 44
doAssert f == 55