diff options
-rw-r--r-- | mesonbuild/ast/interpreter.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/mesonbuild/ast/interpreter.py b/mesonbuild/ast/interpreter.py index 060e087..eb9cb9f 100644 --- a/mesonbuild/ast/interpreter.py +++ b/mesonbuild/ast/interpreter.py @@ -243,8 +243,10 @@ class AstInterpreter(interpreterbase.InterpreterBase): self.reverse_assignment[node.value.ast_id] = node self.assign_vals[node.var_name] = [self.evaluate_statement(node.value)] # Evaluate the value just in case - def flatten_args(self, args: Any, include_unknown_args: bool = False, id_loop_detect: List[str] = []) -> List[str]: - def quick_resolve(n: BaseNode, loop_detect: List[str] = []) -> Any: + def flatten_args(self, args: Any, include_unknown_args: bool = False, id_loop_detect: Optional[List[str]] = None) -> List[str]: + def quick_resolve(n: BaseNode, loop_detect: Optional[List[str]] = None) -> Any: + if loop_detect is None: + loop_detect = [] if isinstance(n, IdNode): if n.value in loop_detect or n.value not in self.assignments: return [] @@ -254,6 +256,8 @@ class AstInterpreter(interpreterbase.InterpreterBase): else: return n + if id_loop_detect is None: + id_loop_detect = [] flattend_args = [] if isinstance(args, ArrayNode): @@ -288,7 +292,7 @@ class AstInterpreter(interpreterbase.InterpreterBase): args = [self.dict_method_call(src, args.name, margs)] else: return [] - except Exception: + except mesonlib.MesonException: return [] # Make sure we are always dealing with lists |