aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
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
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')
-rw-r--r--mesonbuild/interpreter.py5
-rw-r--r--mesonbuild/interpreterbase.py7
2 files changed, 8 insertions, 4 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 86c55e4..a58e57d 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -3128,7 +3128,10 @@ root and issuing %s.
except mesonlib.MesonException as me:
me.file = buildfilename
raise me
- self.evaluate_codeblock(codeblock)
+ try:
+ self.evaluate_codeblock(codeblock)
+ except SubdirDoneRequest:
+ pass
self.subdir = prev_subdir
def _get_kwarg_install_mode(self, kwargs):
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