From d90fcb4048f720a238cbb350164ec8f63d1eec60 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sun, 19 Jun 2016 21:56:09 +0300 Subject: Created ternary operator. Closes #538. --- mesonbuild/interpreter.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'mesonbuild/interpreter.py') diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 5201be2..fddc3c0 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1323,6 +1323,8 @@ class Interpreter(): return self.evaluate_plusassign(cur) elif isinstance(cur, mparser.IndexNode): return self.evaluate_indexing(cur) + elif isinstance(cur, mparser.TernaryNode): + return self.evaluate_ternary(cur) elif self.is_elementary_type(cur): return cur else: @@ -2401,6 +2403,16 @@ class Interpreter(): if not isinstance(node.elseblock, mparser.EmptyNode): self.evaluate_codeblock(node.elseblock) + def evaluate_ternary(self, node): + assert(isinstance(node, mparser.TernaryNode)) + result = self.evaluate_statement(node.condition) + if not isinstance(result, bool): + raise InterpreterException('Ternary condition is not boolean.') + if result: + return self.evaluate_statement(node.trueblock) + else: + return self.evaluate_statement(node.falseblock) + def evaluate_foreach(self, node): assert(isinstance(node, mparser.ForeachClauseNode)) varname = node.varname.value -- cgit v1.1