diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-06-22 09:50:24 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-22 09:50:24 -0700 |
commit | a44c1d18c19b607d443e0ee6247c97a42545c6f4 (patch) | |
tree | b0fd11a1ea1b0c8b1e8031a02e135f863792ff1d /mesonbuild/interpreter/compiler.py | |
parent | bee4dc9f78ad6f6d81df34816d28c06520e972a1 (diff) | |
parent | 281f5abee342b7b53ea50dd8280df4a410382f75 (diff) | |
download | meson-a44c1d18c19b607d443e0ee6247c97a42545c6f4.zip meson-a44c1d18c19b607d443e0ee6247c97a42545c6f4.tar.gz meson-a44c1d18c19b607d443e0ee6247c97a42545c6f4.tar.bz2 |
Merge pull request #8898 from e820/interpreter-required-arguments
interpreter: Add checked kwarg to compiler.get_supported_arguments
Diffstat (limited to 'mesonbuild/interpreter/compiler.py')
-rw-r--r-- | mesonbuild/interpreter/compiler.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py index bf32be3..b1eef2f 100644 --- a/mesonbuild/interpreter/compiler.py +++ b/mesonbuild/interpreter/compiler.py @@ -1,5 +1,7 @@ import functools +from ..interpreterbase.decorators import typed_kwargs, KwargInfo + from .interpreterobjects import (extract_required_kwarg, extract_search_dirs) from .. import mesonlib @@ -684,12 +686,24 @@ class CompilerHolder(ObjectHolder['Compiler']): return result @FeatureNew('compiler.get_supported_arguments', '0.43.0') - @permittedKwargs({}) - def get_supported_arguments_method(self, args, kwargs): + @typed_kwargs( + 'compiler.get_supported_arguments', + KwargInfo('checked', str, default='off', since='0.59.0', + validator=lambda s: 'must be one of "warn", "require" or "off"' if s not in ['warn', 'require', 'off'] else None) + ) + def get_supported_arguments_method(self, args: T.Sequence[str], kwargs: T.Dict[str, T.Any]): args = mesonlib.stringlistify(args) supported_args = [] + checked = kwargs.pop('checked') + for arg in args: - if self.has_argument_method(arg, kwargs): + if not self.has_argument_method(arg, kwargs): + msg = f'Compiler for {self.compiler.get_display_language()} does not support "{arg}"' + if checked == 'warn': + mlog.warning(msg) + elif checked == 'require': + raise mesonlib.MesonException(msg) + else: supported_args.append(arg) return supported_args |