interpreter: stop using hasattr for held_object

We have unholder or isinsatnce(ObjectHolder) for that
pull/8418/head
Dylan Baker 4 years ago committed by Jussi Pakkanen
parent 69c22181f7
commit eba9535428
  1. 14
      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.')

Loading…
Cancel
Save