aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-02-08 16:10:44 -0800
committerJussi Pakkanen <jpakkane@gmail.com>2021-02-25 23:08:23 +0200
commiteba9535428ee9ea41ff1d05f65e07bfe7060060b (patch)
treef1d57ed0d2eaaa6b360042715c7f8d831906e48b
parent69c22181f7b5b5c1510d17976ac74e974ecae2b1 (diff)
downloadmeson-eba9535428ee9ea41ff1d05f65e07bfe7060060b.zip
meson-eba9535428ee9ea41ff1d05f65e07bfe7060060b.tar.gz
meson-eba9535428ee9ea41ff1d05f65e07bfe7060060b.tar.bz2
interpreter: stop using hasattr for held_object
We have unholder or isinsatnce(ObjectHolder) for that
-rw-r--r--mesonbuild/interpreter.py14
1 files changed, 4 insertions, 10 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index a8534d3..e99500d 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2185,8 +2185,7 @@ class MesonMain(InterpreterObject):
name, exe = args
if not isinstance(name, str):
raise InterpreterException('First argument must be a string')
- if hasattr(exe, 'held_object'):
- exe = exe.held_object
+ exe = unholder(exe)
if isinstance(exe, mesonlib.File):
abspath = exe.absolute_path(self.interpreter.environment.source_dir,
self.interpreter.environment.build_dir)
@@ -2206,8 +2205,7 @@ class MesonMain(InterpreterObject):
dep = args[1]
if not isinstance(name, str) or not name:
raise InterpreterException('First argument must be a string and cannot be empty')
- if hasattr(dep, 'held_object'):
- dep = dep.held_object
+ dep = unholder(dep)
if not isinstance(dep, dependencies.Dependency):
raise InterpreterException('Second argument must be a dependency object')
identifier = dependencies.get_dep_identifier(name, kwargs)
@@ -2570,9 +2568,7 @@ class Interpreter(InterpreterBase):
return DependencyHolder(item, self.subproject)
elif isinstance(item, dependencies.ExternalProgram):
return ExternalProgramHolder(item, self.subproject)
- elif hasattr(item, 'held_object'):
- return item
- elif isinstance(item, InterpreterObject):
+ elif isinstance(item, (InterpreterObject, ObjectHolder)):
return item
else:
raise InterpreterException('Module returned a value of unknown type.')
@@ -2605,9 +2601,7 @@ class Interpreter(InterpreterBase):
return InstallDirHolder(v)
elif isinstance(v, Test):
self.build.tests.append(v)
- elif hasattr(v, 'held_object'):
- pass
- elif isinstance(v, (int, str, bool, Disabler)):
+ elif isinstance(v, (int, str, bool, Disabler, ObjectHolder)):
pass
else:
raise InterpreterException('Module returned a value of unknown type.')