Report EParseUndefined at the identifier causing it.

It was being reported at the next token in some cases, due to needing to resolve the scope.
This commit is contained in:
Sei Lisa 2017-10-02 01:23:46 +02:00
parent 9b2668808f
commit 09d96576c7

View file

@ -893,6 +893,7 @@ class parser(object):
raise EParseUEOF(self)
raise EParseSyntax(self)
name = val
idpos = self.errorpos
self.NextToken()
# Course of action decided here.
@ -904,9 +905,11 @@ class parser(object):
# Functions are looked up in the global scope only.
sym = self.FindSymbolFull(val, 0)
if sym is None:
self.errorpos = idpos
raise EParseUndefined(self)
if sym['Kind'] != 'f':
self.errorpos = idpos
raise EParseUndefined(self)
args = self.Parse_optional_expression_list(sym['ParamTypes'])
self.expect(')')
@ -915,6 +918,7 @@ class parser(object):
sym = self.FindSymbolFull(val)
if sym is None or sym['Kind'] != 'v':
self.errorpos = idpos
raise EParseUndefined(self)
typ = sym['Type']