Implement transformation of lists into additions.

If the list in brackets is SEF:
  [a, b, ...]  ->  (list)a + b + ...
  ListExpr + [a, b, ...]  ->  ListExpr + a + b + ...
This commit is contained in:
Sei Lisa 2017-09-15 22:30:22 +02:00
parent de29a9aa07
commit a6a08fe3f3
3 changed files with 110 additions and 3 deletions

View file

@ -22,8 +22,9 @@ import lslfuncs
from lslfoldconst import foldconst
from lslrenamer import renamer
from lsldeadcode import deadcode
from lsllastpass import lastpass
class optimizer(foldconst, renamer, deadcode):
class optimizer(foldconst, renamer, deadcode, lastpass):
# Default values per type when declaring variables
DefaultValues = {'integer': 0, 'float': 0.0, 'string': u'',
@ -67,6 +68,7 @@ class optimizer(foldconst, renamer, deadcode):
self.constfold = 'constfold' in options
self.optlistlength = 'listlength' in options
self.optlistadd = 'listadd' in options
self.dcr = 'dcr' in options
# Math that works fine except in rare corner-cases can be optimized.
@ -88,6 +90,8 @@ class optimizer(foldconst, renamer, deadcode):
if self.constfold:
self.FoldScript(warningpass=True)
self.LastPass()
if self.shrinknames:
self.ShrinkNames()