diff --git a/lslopt/lslfoldconst.py b/lslopt/lslfoldconst.py index 86bdc2a..ca3f5e8 100644 --- a/lslopt/lslfoldconst.py +++ b/lslopt/lslfoldconst.py @@ -974,7 +974,8 @@ class foldconst(object): value = fn(*args) except lslfuncs.ELSLCantCompute: # Don't transform the tree if function is not computable - pass + return + del args if not self.foldtabs: generatesTabs = ( diff --git a/testparser.py b/testparser.py index b856cad..8270f2b 100644 --- a/testparser.py +++ b/testparser.py @@ -504,6 +504,22 @@ class Test03_Optimizer(UnitTestCase): '}\n' ) + p = self.parser.parse('default{timer(){\n' + 'integer i = llGetAgentInfo("12345678-9ABC-DEF0-0123-456789ABCDEF");\n' + '}}\n' + ) + self.opt.optimize(p, ('optimize','constfold')) + out = self.outscript.output(p) + self.assertEqual(out, 'default\n' + '{\n' + ' timer()\n' + ' {\n' + ' integer i = llGetAgentInfo("12345678-' + '9ABC-DEF0-0123-456789ABCDEF");\n' + ' }\n' + '}\n' + ) + try: self.parser.parse('default { timer() { return } }') # should raise EParseSyntax, so it should never get here