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,
|
errNoneSpeedOrSizeExpectedButXFound, errGuiConsoleOrLibExpectedButXFound,
|
||||||
errUnknownOS, errUnknownCPU, errGenOutExpectedButXFound,
|
errUnknownOS, errUnknownCPU, errGenOutExpectedButXFound,
|
||||||
errArgsNeedRunOption, errInvalidMultipleAsgn, errColonOrEqualsExpected,
|
errArgsNeedRunOption, errInvalidMultipleAsgn, errColonOrEqualsExpected,
|
||||||
errExprExpected, errUndeclaredIdentifier, errUseQualifier, errTypeExpected,
|
errExprExpected, errUndeclaredIdentifier, errUndeclaredField,
|
||||||
|
errUndeclaredProcedure, errUndeclaredProcedureField, errUseQualifier,
|
||||||
|
errTypeExpected,
|
||||||
errSystemNeeds, errExecutionOfProgramFailed, errNotOverloadable,
|
errSystemNeeds, errExecutionOfProgramFailed, errNotOverloadable,
|
||||||
errInvalidArgForX, errStmtHasNoEffect, errXExpectsTypeOrValue,
|
errInvalidArgForX, errStmtHasNoEffect, errXExpectsTypeOrValue,
|
||||||
errXExpectsArrayType, errIteratorCannotBeInstantiated, errExprXAmbiguous,
|
errXExpectsArrayType, errIteratorCannotBeInstantiated, errExprXAmbiguous,
|
||||||
|
|
@ -190,6 +192,9 @@ const
|
||||||
errColonOrEqualsExpected: "\':\' or \'=\' expected, but found \'$1\'",
|
errColonOrEqualsExpected: "\':\' or \'=\' expected, but found \'$1\'",
|
||||||
errExprExpected: "expression expected, but found \'$1\'",
|
errExprExpected: "expression expected, but found \'$1\'",
|
||||||
errUndeclaredIdentifier: "undeclared identifier: \'$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",
|
errUseQualifier: "ambiguous identifier: \'$1\' -- use a qualifier",
|
||||||
errTypeExpected: "type expected",
|
errTypeExpected: "type expected",
|
||||||
errSystemNeeds: "system module needs \'$1\'",
|
errSystemNeeds: "system module needs \'$1\'",
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,14 @@ proc resolveOverloads(c: PContext, n, orig: PNode,
|
||||||
pickBest(callOp)
|
pickBest(callOp)
|
||||||
|
|
||||||
if overloadsState == csEmpty and result.state == csEmpty:
|
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
|
return
|
||||||
elif result.state != csMatch:
|
elif result.state != csMatch:
|
||||||
if nfExprCall in n.flags:
|
if nfExprCall in n.flags:
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
discard """
|
discard """
|
||||||
line: 7
|
line: 7
|
||||||
errormsg: "undeclared identifier: 'items'"
|
errormsg: "attempting to call undeclared procedure: 'items'"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
type a = enum b,c,d
|
type a = enum b,c,d
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
discard """
|
discard """
|
||||||
file: "tissue710.nim"
|
file: "tissue710.nim"
|
||||||
line: 8
|
line: 8
|
||||||
errorMsg: "undeclared identifier: '||'"
|
errorMsg: "attempting to call undeclared procedure: '||'"
|
||||||
"""
|
"""
|
||||||
var sum = 0
|
var sum = 0
|
||||||
for x in 3..1000:
|
for x in 3..1000:
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
discard """
|
discard """
|
||||||
file: "tnoop.nim"
|
file: "tnoop.nim"
|
||||||
line: 11
|
line: 11
|
||||||
errormsg: "undeclared identifier: 'a'"
|
errormsg: "attempting to call undeclared procedure: 'a'"
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
discard """
|
discard """
|
||||||
file: "topaque.nim"
|
file: "topaque.nim"
|
||||||
line: 16
|
line: 16
|
||||||
errormsg: "undeclared identifier: \'buffer\'"
|
errormsg: "undeclared field: \'buffer\'"
|
||||||
"""
|
"""
|
||||||
# Test the new opaque types
|
# Test the new opaque types
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
discard """
|
discard """
|
||||||
file: "twrongtupleaccess.nim"
|
file: "twrongtupleaccess.nim"
|
||||||
line: 9
|
line: 9
|
||||||
errormsg: "undeclared identifier: \'setBLAH\'"
|
errormsg: "attempting to call undeclared procedure field: \'setBLAH\'"
|
||||||
"""
|
"""
|
||||||
# Bugfix
|
# Bugfix
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue