diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2018-06-06 14:23:17 -0400 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2018-06-07 12:56:27 +0000 |
commit | 2d3bfa0778d3f7068585c82e991a25c0ce79fbac (patch) | |
tree | 8e3979d5c1cb7893a90f3bd929d4d1a58d9506cb /mesonbuild | |
parent | e581a8937f290fada2eaecc95c978aa6db8e3a2f (diff) | |
download | meson-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.py | 5 | ||||
-rw-r--r-- | mesonbuild/interpreterbase.py | 7 |
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 |