diff options
-rw-r--r-- | compiler/semcall.nim | 11 | ||||
-rw-r--r-- | tests/reject/twrongtupleaccess.nim | 4 |
2 files changed, 9 insertions, 6 deletions
diff --git a/compiler/semcall.nim b/compiler/semcall.nim index 643eef065..c7f4e4387 100644 --- a/compiler/semcall.nim +++ b/compiler/semcall.nim @@ -50,7 +50,8 @@ proc if sym == nil: return initCandidate(best, sym, initialBinding, symScope) initCandidate(alt, sym, initialBinding, symScope) - + best.state = csNoMatch + while sym != nil: if sym.kind in filter: determineType(c, sym) @@ -115,7 +116,8 @@ proc resolveOverloads(c: PContext, n, orig: PNode, pickBest(f) - if result.state == csEmpty: + let overloadsState = result.state + if overloadsState != csMatch: if nfDelegate in n.flags: InternalAssert f.kind == nkIdent let calleeName = newStrNode(nkStrLit, f.ident.s) @@ -127,7 +129,10 @@ proc resolveOverloads(c: PContext, n, orig: PNode, pickBest(callOp) - if result.state == csEmpty: + if overloadsState == csEmpty and result.state == csEmpty: + LocalError(n.info, errUndeclaredIdentifier, considerAcc(f).s) + return + elif result.state != csMatch: if nfExprCall in n.flags: if c.inCompilesContext > 0 or gErrorCounter == 0: LocalError(n.info, errExprXCannotBeCalled, diff --git a/tests/reject/twrongtupleaccess.nim b/tests/reject/twrongtupleaccess.nim index bb09b108d..1a9ae64a2 100644 --- a/tests/reject/twrongtupleaccess.nim +++ b/tests/reject/twrongtupleaccess.nim @@ -1,12 +1,10 @@ discard """ file: "twrongtupleaccess.nim" line: 9 - errormsg: "undeclared field: \'setBLAH\'" + errormsg: "undeclared identifier: \'setBLAH\'" """ # Bugfix var v = (5.0, 10.0) v.setBLAH(10) - - |