diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-04-02 11:39:45 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-04-02 11:39:45 +0200 |
commit | 6da0df95c11fac6037d421ae8cf80af146d321da (patch) | |
tree | ae222b0a196cfac4f62c79c902dae7d98d5413ed /mesonbuild/ast/interpreter.py | |
parent | 1937bbafac07df48e78fea96a8c3c086db564574 (diff) | |
download | meson-6da0df95c11fac6037d421ae8cf80af146d321da.zip meson-6da0df95c11fac6037d421ae8cf80af146d321da.tar.gz meson-6da0df95c11fac6037d421ae8cf80af146d321da.tar.bz2 |
mintro: fix some interpreter crashes
Diffstat (limited to 'mesonbuild/ast/interpreter.py')
-rw-r--r-- | mesonbuild/ast/interpreter.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py index 01277f0..f1602c0 100644 --- a/mesonbuild/ast/interpreter.py +++ b/mesonbuild/ast/interpreter.py @@ -153,8 +153,20 @@ class AstInterpreter(interpreterbase.InterpreterBase): return True def evaluate_arithmeticstatement(self, cur): + self.evaluate_statement(cur.left) + self.evaluate_statement(cur.right) return 0 + def evaluate_uminusstatement(self, cur): + self.evaluate_statement(cur.value) + return 0 + + def evaluate_ternary(self, node): + assert(isinstance(node, mparser.TernaryNode)) + self.evaluate_statement(node.condition) + self.evaluate_statement(node.trueblock) + self.evaluate_statement(node.falseblock) + def evaluate_plusassign(self, node): assert(isinstance(node, mparser.PlusAssignmentNode)) if node.var_name not in self.assignments: @@ -177,6 +189,18 @@ class AstInterpreter(interpreterbase.InterpreterBase): return args.arguments, args.kwargs def evaluate_comparison(self, node): + self.evaluate_statement(node.left) + self.evaluate_statement(node.right) + return False + + def evaluate_andstatement(self, cur): + self.evaluate_statement(cur.left) + self.evaluate_statement(cur.right) + return False + + def evaluate_orstatement(self, cur): + self.evaluate_statement(cur.left) + self.evaluate_statement(cur.right) return False def evaluate_foreach(self, node): |