diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-05-09 19:52:10 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-05-09 19:52:10 +0300 |
commit | 3f7f984a3910565887fcd530ed5c7323dd16708c (patch) | |
tree | 86ace362696e31b83a83a99d389ba324892f91f3 /interpreter.py | |
parent | 8be84a4a7cb3ed81ef06c9d536ec7223150c9373 (diff) | |
download | meson-3f7f984a3910565887fcd530ed5c7323dd16708c.zip meson-3f7f984a3910565887fcd530ed5c7323dd16708c.tar.gz meson-3f7f984a3910565887fcd530ed5c7323dd16708c.tar.bz2 |
Handle then unary negation operator.
Diffstat (limited to 'interpreter.py')
-rw-r--r-- | interpreter.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py index 8c16518..0ab7291 100644 --- a/interpreter.py +++ b/interpreter.py @@ -945,6 +945,8 @@ class Interpreter(): return self.evaluate_orstatement(cur) elif isinstance(cur, mparser.NotNode): return self.evaluate_notstatement(cur) + elif isinstance(cur, mparser.UMinusNode): + return self.evaluate_uminusstatement(cur) elif isinstance(cur, mparser.ArithmeticNode): return self.evaluate_arithmeticstatement(cur) elif isinstance(cur, mparser.ForeachClauseNode): @@ -1791,6 +1793,14 @@ class Interpreter(): raise InterpreterException('Argument to "not" is not a boolean.') return not v + def evaluate_uminusstatement(self, cur): + v = self.evaluate_statement(cur.value) + if isinstance(v, mparser.NumberNode): + v = v.value + if not isinstance(v, int): + raise InterpreterException('Argument to negation is not an integer.') + return -v + def evaluate_arithmeticstatement(self, cur): l = self.to_native(self.evaluate_statement(cur.left)) r = self.to_native(self.evaluate_statement(cur.right)) |