diff options
-rw-r--r-- | mesonbuild/interpreter.py | 5 | ||||
-rw-r--r-- | mesonbuild/interpreterbase.py | 7 | ||||
-rw-r--r-- | test cases/common/188 subdir_done/meson.build | 4 |
3 files changed, 11 insertions, 5 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 diff --git a/test cases/common/188 subdir_done/meson.build b/test cases/common/188 subdir_done/meson.build index 5692f3a..457e613 100644 --- a/test cases/common/188 subdir_done/meson.build +++ b/test cases/common/188 subdir_done/meson.build @@ -3,7 +3,9 @@ project('example exit', 'cpp') -subdir_done() +if true + subdir_done() +endif executable('main', 'main.cpp') error('Unreachable') |