diff options
Diffstat (limited to 'mesonbuild/interpreterbase')
-rw-r--r-- | mesonbuild/interpreterbase/decorators.py | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/mesonbuild/interpreterbase/decorators.py b/mesonbuild/interpreterbase/decorators.py index a95dd15..d8551aa 100644 --- a/mesonbuild/interpreterbase/decorators.py +++ b/mesonbuild/interpreterbase/decorators.py @@ -102,11 +102,11 @@ class permittedKwargs: def __call__(self, f: TV_func) -> TV_func: @wraps(f) def wrapped(*wrapped_args: T.Any, **wrapped_kwargs: T.Any) -> T.Any: - node, args, kwargs, _ = get_callee_args(wrapped_args) - for k in kwargs: - if k not in self.permitted: - mlog.warning(f'''Passed invalid keyword argument "{k}".''', location=node) - mlog.warning('This will become a hard error in the future.') + kwargs = get_callee_args(wrapped_args)[2] + unknowns = set(kwargs).difference(self.permitted) + if unknowns: + ustr = ', '.join([f'"{u}"' for u in sorted(unknowns)]) + raise InvalidArguments(f'Got unknown keyword arguments {ustr}') return f(*wrapped_args, **wrapped_kwargs) return T.cast(TV_func, wrapped) @@ -406,12 +406,8 @@ def typed_kwargs(name: str, *types: KwargInfo) -> T.Callable[..., T.Any]: all_names = {t.name for t in types} unknowns = set(kwargs).difference(all_names) if unknowns: - # Warn about unknown argumnts, delete them and continue. This - # keeps current behavior ustr = ', '.join([f'"{u}"' for u in sorted(unknowns)]) - mlog.warning(f'{name} got unknown keyword arguments {ustr}') - for u in unknowns: - del kwargs[u] + raise InvalidArguments(f'{name} got unknown keyword arguments {ustr}') for info in types: value = kwargs.get(info.name) |