From a95763c715111053538434c0f1df87d5efcf4aad Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Sat, 18 Aug 2018 08:31:12 -0300 Subject: interpreter: Handle 'bool, str, int' values returned by modules --- mesonbuild/interpreter.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'mesonbuild/interpreter.py') diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 707cf9e..e6dbb5c 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -1974,7 +1974,7 @@ class Interpreter(InterpreterBase): return [self.holderify(x) for x in item] if isinstance(item, build.CustomTarget): return CustomTargetHolder(item, self) - elif isinstance(item, (int, str)) or item is None: + elif isinstance(item, (int, str, bool)) or item is None: return item elif isinstance(item, build.Executable): return ExecutableHolder(item, self) @@ -2018,6 +2018,8 @@ class Interpreter(InterpreterBase): self.process_new_values(v.sources[0]) elif hasattr(v, 'held_object'): pass + elif isinstance(v, (int, str, bool)): + pass else: raise InterpreterException('Module returned a value of unknown type.') -- cgit v1.1 From 221ac05c6924ebd03f11632fd6abd4f5f9acc493 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Sat, 18 Aug 2018 08:09:03 -0300 Subject: interpreter: Also process *TargetHolder returned by modules The module might need to add extra methods on the returned targets and thus it can return TargetHolders, we should process the held targets --- mesonbuild/interpreter.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'mesonbuild/interpreter.py') diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index e6dbb5c..9c161cb 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -2000,6 +2000,9 @@ class Interpreter(InterpreterBase): def process_new_values(self, invalues): invalues = listify(invalues) for v in invalues: + if isinstance(v, (RunTargetHolder, CustomTargetHolder, BuildTargetHolder)): + v = v.held_object + if isinstance(v, (build.BuildTarget, build.CustomTarget, build.RunTarget)): self.add_target(v.name, v) elif isinstance(v, list): -- cgit v1.1