aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/ast/interpreter.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-04-02 11:39:45 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-04-02 11:39:45 +0200
commit6da0df95c11fac6037d421ae8cf80af146d321da (patch)
treeae222b0a196cfac4f62c79c902dae7d98d5413ed /mesonbuild/ast/interpreter.py
parent1937bbafac07df48e78fea96a8c3c086db564574 (diff)
downloadmeson-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.py24
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):