interpreter: Remove permissive from _unholder
This commit is contained in:
parent
ea02c1c48a
commit
43a6b5bd5e
|
@ -2643,7 +2643,7 @@ This will become a hard error in the future.''', location=self.current_node)
|
|||
@typed_pos_args('get_variable', (str, Disabler), optargs=[object])
|
||||
@noKwargs
|
||||
@noArgsFlattening
|
||||
@permissive_unholder_return
|
||||
@unholder_return
|
||||
def func_get_variable(self, node: mparser.BaseNode, args: T.Tuple[T.Union[str, Disabler], T.Optional[object]],
|
||||
kwargs: 'TYPE_kwargs') -> 'TYPE_var':
|
||||
varname, fallback = args
|
||||
|
@ -2654,7 +2654,7 @@ This will become a hard error in the future.''', location=self.current_node)
|
|||
return self.variables[varname]
|
||||
except KeyError:
|
||||
if fallback is not None:
|
||||
return fallback
|
||||
return self._holderify(fallback)
|
||||
raise InterpreterException(f'Tried to get unknown variable "{varname}".')
|
||||
|
||||
@typed_pos_args('is_variable', str)
|
||||
|
|
|
@ -18,7 +18,7 @@ from ..interpreterbase import (
|
|||
InterpreterObject, MesonInterpreterObject, ObjectHolder, MutableInterpreterObject,
|
||||
FeatureCheckBase, FeatureNewKwargs, FeatureNew, FeatureDeprecated,
|
||||
typed_pos_args, typed_kwargs, permittedKwargs,
|
||||
noArgsFlattening, noPosargs, noKwargs, permissive_unholder_return, TYPE_var, TYPE_kwargs, TYPE_nvar, TYPE_nkwargs,
|
||||
noArgsFlattening, noPosargs, noKwargs, unholder_return, TYPE_var, TYPE_kwargs, TYPE_nvar, TYPE_nkwargs,
|
||||
flatten, resolve_second_level_holders, InterpreterException, InvalidArguments, InvalidCode)
|
||||
from ..interpreter.type_checking import NoneType
|
||||
from ..dependencies import Dependency, ExternalLibrary, InternalDependency
|
||||
|
@ -712,7 +712,7 @@ class SubprojectHolder(MesonInterpreterObject):
|
|||
|
||||
@noKwargs
|
||||
@noArgsFlattening
|
||||
@permissive_unholder_return
|
||||
@unholder_return
|
||||
def get_variable_method(self, args: T.List[TYPE_var], kwargs: TYPE_kwargs) -> T.Union[TYPE_var, InterpreterObject]:
|
||||
if len(args) < 1 or len(args) > 2:
|
||||
raise InterpreterException('Get_variable takes one or two arguments.')
|
||||
|
@ -727,7 +727,7 @@ class SubprojectHolder(MesonInterpreterObject):
|
|||
pass
|
||||
|
||||
if len(args) == 2:
|
||||
return args[1]
|
||||
return self.held_object._holderify(args[1])
|
||||
|
||||
raise InvalidArguments(f'Requested variable "{varname}" not found.')
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ __all__ = [
|
|||
'stringArgs',
|
||||
'noArgsFlattening',
|
||||
'noSecondLevelHolderResolving',
|
||||
'permissive_unholder_return',
|
||||
'unholder_return',
|
||||
'disablerIfNotFound',
|
||||
'permittedKwargs',
|
||||
'typed_operator',
|
||||
|
@ -102,7 +102,7 @@ from .decorators import (
|
|||
stringArgs,
|
||||
noArgsFlattening,
|
||||
noSecondLevelHolderResolving,
|
||||
permissive_unholder_return,
|
||||
unholder_return,
|
||||
disablerIfNotFound,
|
||||
permittedKwargs,
|
||||
typed_pos_args,
|
||||
|
|
|
@ -18,20 +18,18 @@ from ..mesonlib import HoldableObject, MesonBugException
|
|||
|
||||
import typing as T
|
||||
|
||||
def _unholder(obj: T.Union[TYPE_var, InterpreterObject], *, permissive: bool = False) -> TYPE_var:
|
||||
if isinstance(obj, (bool, str)):
|
||||
def _unholder(obj: T.Union[TYPE_var, InterpreterObject]) -> TYPE_var:
|
||||
if isinstance(obj, str):
|
||||
return obj
|
||||
elif isinstance(obj, list):
|
||||
return [_unholder(x, permissive=permissive) for x in obj]
|
||||
return [_unholder(x) for x in obj]
|
||||
elif isinstance(obj, dict):
|
||||
return {k: _unholder(v, permissive=permissive) for k, v in obj.items()}
|
||||
return {k: _unholder(v) for k, v in obj.items()}
|
||||
elif isinstance(obj, ObjectHolder):
|
||||
assert isinstance(obj.held_object, HoldableTypes)
|
||||
return obj.held_object
|
||||
elif isinstance(obj, MesonInterpreterObject):
|
||||
return obj
|
||||
elif isinstance(obj, HoldableObject) and permissive:
|
||||
return obj
|
||||
elif isinstance(obj, HoldableObject):
|
||||
raise MesonBugException(f'Argument {obj} of type {type(obj).__name__} is not held by an ObjectHolder.')
|
||||
elif isinstance(obj, InterpreterObject):
|
||||
|
|
Loading…
Reference in New Issue