aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreterbase.py
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2018-06-06 14:23:17 -0400
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2018-06-07 12:56:27 +0000
commit2d3bfa0778d3f7068585c82e991a25c0ce79fbac (patch)
tree8e3979d5c1cb7893a90f3bd929d4d1a58d9506cb /mesonbuild/interpreterbase.py
parente581a8937f290fada2eaecc95c978aa6db8e3a2f (diff)
downloadmeson-2d3bfa0778d3f7068585c82e991a25c0ce79fbac.zip
meson-2d3bfa0778d3f7068585c82e991a25c0ce79fbac.tar.gz
meson-2d3bfa0778d3f7068585c82e991a25c0ce79fbac.tar.bz2
Interpreter: Fix subdir_done() to exit from inside if/foreach blocks
Closes: #3700.
Diffstat (limited to 'mesonbuild/interpreterbase.py')
-rw-r--r--mesonbuild/interpreterbase.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py
index a908732..1c61345 100644
--- a/mesonbuild/interpreterbase.py
+++ b/mesonbuild/interpreterbase.py
@@ -326,7 +326,10 @@ class InterpreterBase:
def run(self):
# Evaluate everything after the first line, which is project() because
# we already parsed that in self.parse_project()
- self.evaluate_codeblock(self.ast, start=1)
+ try:
+ self.evaluate_codeblock(self.ast, start=1)
+ except SubdirDoneRequest:
+ pass
def evaluate_codeblock(self, node, start=0, end=None):
if node is None:
@@ -343,8 +346,6 @@ class InterpreterBase:
try:
self.current_lineno = cur.lineno
self.evaluate_statement(cur)
- except SubdirDoneRequest:
- break
except Exception as e:
if not(hasattr(e, 'lineno')):
e.lineno = cur.lineno