Fix nested lists disabling list mode.
Lists can't contain lists at runtime, but they can at parse time, so the optimizer must behave properly when handling nested lists. And it didn't, because it neglected to preserve the previous state of self.listmode. So we fix that.
This commit is contained in:
@@ -150,21 +150,23 @@ class outscript(object):
|
|||||||
if value == []:
|
if value == []:
|
||||||
return '[]'
|
return '[]'
|
||||||
if len(value) < 5:
|
if len(value) < 5:
|
||||||
|
save_listmode = self.listmode
|
||||||
self.listmode = True
|
self.listmode = True
|
||||||
ret = '[' + self.Value2LSL(value[0])
|
ret = '[' + self.Value2LSL(value[0])
|
||||||
for elem in value[1:]:
|
for elem in value[1:]:
|
||||||
ret += ', ' + self.Value2LSL(elem)
|
ret += ', ' + self.Value2LSL(elem)
|
||||||
ret += ']'
|
ret += ']'
|
||||||
self.listmode = False
|
self.listmode = save_listmode
|
||||||
return ret
|
return ret
|
||||||
ret = '' if lslcommon.IsCalc else '\n'
|
ret = '' if lslcommon.IsCalc else '\n'
|
||||||
first = True
|
first = True
|
||||||
self.indentlevel += 1
|
self.indentlevel += 1
|
||||||
for entry in value:
|
for entry in value:
|
||||||
ret += self.dent() + ('[ ' if first else ', ')
|
ret += self.dent() + ('[ ' if first else ', ')
|
||||||
|
save_listmode = self.listmode
|
||||||
self.listmode = True
|
self.listmode = True
|
||||||
ret += self.Value2LSL(entry) + '\n'
|
ret += self.Value2LSL(entry) + '\n'
|
||||||
self.listmode = False
|
self.listmode = save_listmode
|
||||||
first = False
|
first = False
|
||||||
self.indentlevel -= 1
|
self.indentlevel -= 1
|
||||||
return ret + self.dent() + self.indent + ']'
|
return ret + self.dent() + self.indent + ']'
|
||||||
|
|||||||
Reference in New Issue
Block a user