diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-08-01 21:08:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-01 21:08:04 +0300 |
commit | 657f357fc6ac0d97d30c940f9919b0021902a608 (patch) | |
tree | 09d212abc005a89626b4ed5353711efa69864b41 /mesonbuild/interpreter.py | |
parent | 58ad092ff36dfe209b0f4da13f90705d42e4b9ea (diff) | |
parent | b382abdd2c307d0716353013022df5039991ac1f (diff) | |
download | meson-657f357fc6ac0d97d30c940f9919b0021902a608.zip meson-657f357fc6ac0d97d30c940f9919b0021902a608.tar.gz meson-657f357fc6ac0d97d30c940f9919b0021902a608.tar.bz2 |
Merge pull request #605 from mesonbuild/ternary
Added ternary operator support
Diffstat (limited to 'mesonbuild/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 8c13289..9c2a74c 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: @@ -2402,6 +2404,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 |