From b441c1774fb3b0f6a04ccf01d529f63857068bed Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Mon, 28 Jul 2014 18:46:37 +0200 Subject: [PATCH] Fix incorrect warning when a global vector/quat/list contains an ident --- lslopt/lsloptimizer.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lslopt/lsloptimizer.py b/lslopt/lsloptimizer.py index a76569b..79644d5 100644 --- a/lslopt/lsloptimizer.py +++ b/lslopt/lsloptimizer.py @@ -355,6 +355,13 @@ class optimizer(object): raise Exception('Internal error: This should not happen, node = ' + code0) # pragma: no cover + def IsValidGlobalConstant(self, value): + if value[0] == 'EXPR': + value = value[2] + if value[0] not in ('VECTOR', 'ROTATION', 'LIST'): + return False + return all(x[0] in (CONSTANT, 'IDENT') for x in value[2:]) + def optimize(self, symtab, functions, options = ('optimize',)): """Optimize the symbolic table symtab in place. Requires a table of predefined functions for folding constants. @@ -388,6 +395,6 @@ class optimizer(object): # Unfold constant if val[0] == 'EXPR' and val[2][0] == CONSTANT: symtab[0][name] = entry[:2] + (val[2][2],) + entry[3:] - else: + elif not self.IsValidGlobalConstant(val): warning('WARNING: Expression does not collapse to a single constant.') self.globalmode = False