Fixes #2584
Better compiler errors for accessing undeclared fields, calling undeclared procedures and procedure fields.
This commit is contained in:
parent
ccb9ae2d52
commit
22f6017ab8
7 changed files with 22 additions and 10 deletions
|
|
@ -34,7 +34,9 @@ type
|
|||
errNoneSpeedOrSizeExpectedButXFound, errGuiConsoleOrLibExpectedButXFound,
|
||||
errUnknownOS, errUnknownCPU, errGenOutExpectedButXFound,
|
||||
errArgsNeedRunOption, errInvalidMultipleAsgn, errColonOrEqualsExpected,
|
||||
errExprExpected, errUndeclaredIdentifier, errUseQualifier, errTypeExpected,
|
||||
errExprExpected, errUndeclaredIdentifier, errUndeclaredField,
|
||||
errUndeclaredProcedure, errUndeclaredProcedureField, errUseQualifier,
|
||||
errTypeExpected,
|
||||
errSystemNeeds, errExecutionOfProgramFailed, errNotOverloadable,
|
||||
errInvalidArgForX, errStmtHasNoEffect, errXExpectsTypeOrValue,
|
||||
errXExpectsArrayType, errIteratorCannotBeInstantiated, errExprXAmbiguous,
|
||||
|
|
@ -190,6 +192,9 @@ const
|
|||
errColonOrEqualsExpected: "\':\' or \'=\' expected, but found \'$1\'",
|
||||
errExprExpected: "expression expected, but found \'$1\'",
|
||||
errUndeclaredIdentifier: "undeclared identifier: \'$1\'",
|
||||
errUndeclaredField: "undeclared field: \'$1\'",
|
||||
errUndeclaredProcedure: "attempting to call undeclared procedure: \'$1\'",
|
||||
errUndeclaredProcedureField: "attempting to call undeclared procedure field: \'$1\'",
|
||||
errUseQualifier: "ambiguous identifier: \'$1\' -- use a qualifier",
|
||||
errTypeExpected: "type expected",
|
||||
errSystemNeeds: "system module needs \'$1\'",
|
||||
|
|
|
|||
|
|
@ -209,7 +209,14 @@ proc resolveOverloads(c: PContext, n, orig: PNode,
|
|||
pickBest(callOp)
|
||||
|
||||
if overloadsState == csEmpty and result.state == csEmpty:
|
||||
localError(n.info, errUndeclaredIdentifier, considerQuotedIdent(f).s)
|
||||
if nfDotField in n.flags:
|
||||
if nfExplicitCall in n.flags:
|
||||
localError(n.info, errUndeclaredProcedureField,
|
||||
considerQuotedIdent(f).s)
|
||||
else:
|
||||
localError(n.info, errUndeclaredField, considerQuotedIdent(f).s)
|
||||
else:
|
||||
localError(n.info, errUndeclaredProcedure, considerQuotedIdent(f).s)
|
||||
return
|
||||
elif result.state != csMatch:
|
||||
if nfExprCall in n.flags:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
discard """
|
||||
line: 7
|
||||
errormsg: "undeclared identifier: 'items'"
|
||||
errormsg: "attempting to call undeclared procedure: 'items'"
|
||||
"""
|
||||
|
||||
type a = enum b,c,d
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
discard """
|
||||
file: "tissue710.nim"
|
||||
line: 8
|
||||
errorMsg: "undeclared identifier: '||'"
|
||||
errorMsg: "attempting to call undeclared procedure: '||'"
|
||||
"""
|
||||
var sum = 0
|
||||
for x in 3..1000:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
discard """
|
||||
file: "tnoop.nim"
|
||||
line: 11
|
||||
errormsg: "undeclared identifier: 'a'"
|
||||
errormsg: "attempting to call undeclared procedure: 'a'"
|
||||
"""
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
discard """
|
||||
file: "topaque.nim"
|
||||
line: 16
|
||||
errormsg: "undeclared identifier: \'buffer\'"
|
||||
errormsg: "undeclared field: \'buffer\'"
|
||||
"""
|
||||
# Test the new opaque types
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
discard """
|
||||
file: "twrongtupleaccess.nim"
|
||||
line: 9
|
||||
errormsg: "undeclared identifier: \'setBLAH\'"
|
||||
errormsg: "attempting to call undeclared procedure field: \'setBLAH\'"
|
||||
"""
|
||||
# Bugfix
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue