mirror of
https://github.com/Sei-Lisa/LSL-PyOptimizer
synced 2025-07-03 00:18:20 +00:00
Bug fix: Error on existing events in current state.
This commit is contained in:
parent
dd446217a9
commit
50d1bb2c41
1 changed files with 7 additions and 2 deletions
|
@ -1467,17 +1467,20 @@ class parser(object):
|
||||||
while self.tok[0] == 'EVENT_NAME':
|
while self.tok[0] == 'EVENT_NAME':
|
||||||
name = self.tok[1]
|
name = self.tok[1]
|
||||||
self.NextToken()
|
self.NextToken()
|
||||||
|
if name in self.localevents:
|
||||||
|
raise EParseAlreadyDefined(self)
|
||||||
|
self.localevents.add(name)
|
||||||
self.expect('(')
|
self.expect('(')
|
||||||
self.NextToken()
|
self.NextToken()
|
||||||
# Function parameters go to a dedicated symbol table.
|
# Function parameters go to a dedicated symbol table.
|
||||||
self.PushScope()
|
self.PushScope()
|
||||||
params = self.Parse_optional_param_list()
|
params = self.Parse_optional_param_list()
|
||||||
|
self.expect(')')
|
||||||
|
self.NextToken()
|
||||||
# NOTE: Parse_events: This is a bit crude, as the error is given at the end of the param list.
|
# NOTE: Parse_events: This is a bit crude, as the error is given at the end of the param list.
|
||||||
# To do it correctly, we can pass the parameter list to Parse_optional_param_list().
|
# To do it correctly, we can pass the parameter list to Parse_optional_param_list().
|
||||||
if tuple(params[0]) != self.events[name]:
|
if tuple(params[0]) != self.events[name]:
|
||||||
raise EParseSyntax(self)
|
raise EParseSyntax(self)
|
||||||
self.expect(')')
|
|
||||||
self.NextToken()
|
|
||||||
self.locallabels = set()
|
self.locallabels = set()
|
||||||
body = self.Parse_code_block(None)
|
body = self.Parse_code_block(None)
|
||||||
del self.locallabels
|
del self.locallabels
|
||||||
|
@ -1608,7 +1611,9 @@ class parser(object):
|
||||||
self.expect('{')
|
self.expect('{')
|
||||||
self.NextToken()
|
self.NextToken()
|
||||||
|
|
||||||
|
self.localevents = set()
|
||||||
events = self.Parse_events()
|
events = self.Parse_events()
|
||||||
|
del self.localevents
|
||||||
|
|
||||||
self.expect('}')
|
self.expect('}')
|
||||||
self.tree.append({'nt':'STDEF', 't':None, 'name':name, 'scope':0, 'ch':events})
|
self.tree.append({'nt':'STDEF', 't':None, 'name':name, 'scope':0, 'ch':events})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue