mirror of
https://github.com/Sei-Lisa/LSL-PyOptimizer
synced 2025-07-01 23:58:20 +00:00
Give more meaningful errors when break/continue parameter is wrong.
Adds a new EParseInvalidBrkContArg exception. Previously it raised EParseInvalidBreak or EParseInvalidCont, whose text was misleading for this type of error.
This commit is contained in:
parent
84e4543300
commit
f1b05dd2ff
1 changed files with 11 additions and 6 deletions
|
@ -157,8 +157,7 @@ class EParseInvalidBreak(EParse):
|
||||||
super(EParseInvalidBreak, self).__init__(parser,
|
super(EParseInvalidBreak, self).__init__(parser,
|
||||||
u"'break' used outside a loop or switch"
|
u"'break' used outside a loop or switch"
|
||||||
if parser.enableswitch and parser.breakcont
|
if parser.enableswitch and parser.breakcont
|
||||||
else u"'break' used outside a switch"
|
else u"'break' used outside a switch" if parser.enableswitch
|
||||||
if parser.enableswitch
|
|
||||||
else u"'break' used outside a loop")
|
else u"'break' used outside a loop")
|
||||||
|
|
||||||
class EParseInvalidCont(EParse):
|
class EParseInvalidCont(EParse):
|
||||||
|
@ -166,6 +165,12 @@ class EParseInvalidCont(EParse):
|
||||||
super(EParseInvalidCont, self).__init__(parser,
|
super(EParseInvalidCont, self).__init__(parser,
|
||||||
u"'continue' used outside a loop")
|
u"'continue' used outside a loop")
|
||||||
|
|
||||||
|
class EParseInvalidBrkContArg(EParse):
|
||||||
|
def __init__(self, parser):
|
||||||
|
super(EParseInvalidBrkContArg, self).__init__(parser,
|
||||||
|
u"Invalid argument to 'break' or 'continue'" if parser.breakcont
|
||||||
|
else u"Invalid argument to 'break'")
|
||||||
|
|
||||||
class EParseInvalidBackslash(EParse):
|
class EParseInvalidBackslash(EParse):
|
||||||
def __init__(self, parser):
|
def __init__(self, parser):
|
||||||
super(EParseInvalidBackslash, self).__init__(parser,
|
super(EParseInvalidBackslash, self).__init__(parser,
|
||||||
|
@ -1925,7 +1930,7 @@ list lazy_list_set(list L, integer i, list v)
|
||||||
n = -1
|
n = -1
|
||||||
if self.tok[0] == 'INTEGER_VALUE':
|
if self.tok[0] == 'INTEGER_VALUE':
|
||||||
if self.tok[1] <= 0:
|
if self.tok[1] <= 0:
|
||||||
raise EParseInvalidBreak(self)
|
raise EParseInvalidBrkContArg(self)
|
||||||
n = -self.tok[1]
|
n = -self.tok[1]
|
||||||
self.NextToken()
|
self.NextToken()
|
||||||
self.expect(';')
|
self.expect(';')
|
||||||
|
@ -1933,7 +1938,7 @@ list lazy_list_set(list L, integer i, list v)
|
||||||
try:
|
try:
|
||||||
self.breakstack[n][2] = True
|
self.breakstack[n][2] = True
|
||||||
except IndexError:
|
except IndexError:
|
||||||
raise EParseInvalidBreak(self)
|
raise EParseInvalidBrkContArg(self)
|
||||||
return {'nt':'JUMP', 't':None, 'name':self.breakstack[n][0],
|
return {'nt':'JUMP', 't':None, 'name':self.breakstack[n][0],
|
||||||
'scope':self.breakstack[n][1]}
|
'scope':self.breakstack[n][1]}
|
||||||
|
|
||||||
|
@ -1944,7 +1949,7 @@ list lazy_list_set(list L, integer i, list v)
|
||||||
n = -1
|
n = -1
|
||||||
if self.tok[0] == 'INTEGER_VALUE':
|
if self.tok[0] == 'INTEGER_VALUE':
|
||||||
if self.tok[1] <= 0:
|
if self.tok[1] <= 0:
|
||||||
raise EParseInvalidCont(self)
|
raise EParseInvalidBrkContArg(self)
|
||||||
n = -self.tok[1]
|
n = -self.tok[1]
|
||||||
self.NextToken()
|
self.NextToken()
|
||||||
self.expect(';')
|
self.expect(';')
|
||||||
|
@ -1964,7 +1969,7 @@ list lazy_list_set(list L, integer i, list v)
|
||||||
return {'nt':'JUMP', 't':None, 'name':self.breakstack[n][0],
|
return {'nt':'JUMP', 't':None, 'name':self.breakstack[n][0],
|
||||||
'scope':self.breakstack[n][1]}
|
'scope':self.breakstack[n][1]}
|
||||||
except IndexError:
|
except IndexError:
|
||||||
raise EParseInvalidCont(self)
|
raise EParseInvalidBrkContArg(self)
|
||||||
self.continuestack[n][2] = True
|
self.continuestack[n][2] = True
|
||||||
return {'nt':'JUMP', 't':None, 'name':self.continuestack[n][0],
|
return {'nt':'JUMP', 't':None, 'name':self.continuestack[n][0],
|
||||||
'scope':self.continuestack[n][1]}
|
'scope':self.continuestack[n][1]}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue