From 4633c87a7cfb254d5fff3bbd359b90cb35ae0aac Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Mon, 2 Oct 2017 01:23:46 +0200 Subject: [PATCH] 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. --- lslopt/lslparse.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lslopt/lslparse.py b/lslopt/lslparse.py index ff43533..423d034 100644 --- a/lslopt/lslparse.py +++ b/lslopt/lslparse.py @@ -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']