aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreterbase
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2021-08-28 21:05:01 -0400
committerXavier Claessens <xclaesse@gmail.com>2021-08-30 14:00:54 -0400
commit88a1bed81b7d9ad262d3b511eb20444c609db235 (patch)
treec2de0d913dd6bc3bef7f5fc7e6d76c193d8e9c0c /mesonbuild/interpreterbase
parent276063a1d2132940ec4a93623f1a5d01266bcd80 (diff)
downloadmeson-88a1bed81b7d9ad262d3b511eb20444c609db235.zip
meson-88a1bed81b7d9ad262d3b511eb20444c609db235.tar.gz
meson-88a1bed81b7d9ad262d3b511eb20444c609db235.tar.bz2
decorators: Make unknown kwarg fatal
Diffstat (limited to 'mesonbuild/interpreterbase')
-rw-r--r--mesonbuild/interpreterbase/decorators.py16
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)