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:
Sei Lisa 2017-01-13 00:25:35 +01:00
parent 133c1572f6
commit c08d1edb5d

View file

@ -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 + ']'