aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-07-27 17:58:17 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2013-07-27 17:58:17 +0300
commit6a17d6994dc1b9a249ad5be31e06a7ba9e80454d (patch)
treed4d4c159b9b606fe8f6fe849d48d6a5ccafa1f05 /interpreter.py
parente8fba977f4d23b268a649769d16cea9fc3b7cc01 (diff)
downloadmeson-6a17d6994dc1b9a249ad5be31e06a7ba9e80454d.zip
meson-6a17d6994dc1b9a249ad5be31e06a7ba9e80454d.tar.gz
meson-6a17d6994dc1b9a249ad5be31e06a7ba9e80454d.tar.bz2
Cleaner, simpler elif.
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py23
1 files changed, 2 insertions, 21 deletions
diff --git a/interpreter.py b/interpreter.py
index 154ed40..5b2dbba 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1209,32 +1209,13 @@ class Interpreter():
self.evaluate_codeblock(node.trueblock)
else:
block = node.falseblock
- if isinstance(block, nodes.ElifStatement):
- self.evaluate_elif(block)
+ if isinstance(block, nodes.IfStatement):
+ self.evaluate_if(block)
else:
self.evaluate_codeblock(block)
else:
raise InvalidCode('If clause does not evaluate to true or false.')
- def evaluate_elif(self, node):
- result = self.evaluate_statement(node.clause)
- cond = None
- if isinstance(result, nodes.BoolExpression) or \
- isinstance(result, nodes.BoolStatement):
- cond = result.get_value()
- if isinstance(result, bool):
- cond = result
- if cond is not None:
- if cond:
- self.evaluate_codeblock(node.trueblock)
- else:
- block = node.elseblock
- if isinstance(block, nodes.ElifStatement):
- self.evaluate_elif(block)
- self.evaluate_codeblock(block)
- else:
- raise InvalidCode('Elif clause does not evaluate to true or false.')
-
def is_elementary_type(self, v):
if isinstance(v, int) or isinstance(v, str) or isinstance(v, bool):
return True