aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-06-01 20:59:38 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-06-15 12:48:53 -0700
commit491c756dc99fa4b126ddcbbee7de149d47c9199f (patch)
tree18938a892427c52393169c464b4033c0e76f4610 /mesonbuild
parentd2c1ab40a0c94209d8e13886f3c7d697d30f2507 (diff)
downloadmeson-491c756dc99fa4b126ddcbbee7de149d47c9199f.zip
meson-491c756dc99fa4b126ddcbbee7de149d47c9199f.tar.gz
meson-491c756dc99fa4b126ddcbbee7de149d47c9199f.tar.bz2
interpreter: use typed_kwargs for func_generator
Do the type checking in a nice tidy way
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/interpreter/interpreter.py13
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py1
-rw-r--r--mesonbuild/interpreter/kwargs.py11
3 files changed, 22 insertions, 3 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 3c69edf..f2b1bd9 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -1955,8 +1955,17 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
@permittedKwargs({'arguments', 'output', 'depends', 'depfile', 'capture',
'preserve_path_from'})
@typed_pos_args('generator', (ExecutableHolder, ExternalProgramHolder))
- def func_generator(self, node: mparser.FunctionNode, args: T.Tuple[T.Union[ExecutableHolder, ExternalProgramHolder]],
- kwargs) -> GeneratorHolder:
+ @typed_kwargs(
+ 'generator',
+ KwargInfo('arguments', ContainerTypeInfo(list, str, allow_empty=False), required=True, listify=True),
+ KwargInfo('output', ContainerTypeInfo(list, str, allow_empty=False), required=True, listify=True),
+ KwargInfo('depfile', str),
+ KwargInfo('capture', bool, default=False, since='0.43.0'),
+ KwargInfo('depends', ContainerTypeInfo(list, (BuildTargetHolder, CustomTargetHolder)), default=[], listify=True),
+ )
+ def func_generator(self, node: mparser.FunctionNode,
+ args: T.Tuple[T.Union[ExecutableHolder, ExternalProgramHolder]],
+ kwargs: 'kwargs.FuncGenerator') -> GeneratorHolder:
gen = build.Generator(args[0].held_object, kwargs)
holder = GeneratorHolder(self, gen, self)
self.generators.append(holder)
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index 8913b21..8bc171c 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -622,7 +622,6 @@ class ExternalLibraryHolder(InterpreterObject, ObjectHolder[ExternalLibrary]):
class GeneratorHolder(InterpreterObject, ObjectHolder[build.Generator]):
- @FeatureNewKwargs('generator', '0.43.0', ['capture'])
def __init__(self, gen: 'build.Generator', interpreter: 'Interpreter'):
InterpreterObject.__init__(self)
ObjectHolder.__init__(self, gen, interpreter.subproject)
diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py
index feba62e..b856e68 100644
--- a/mesonbuild/interpreter/kwargs.py
+++ b/mesonbuild/interpreter/kwargs.py
@@ -71,3 +71,14 @@ class ExtractRequired(TypedDict):
"""
required: T.Union[bool, 'FeatureOptionHolder']
+
+
+class FuncGenerator(TypedDict):
+
+ """Keyword rguments for the generator function."""
+
+ arguments: T.List[str]
+ output: T.List[str]
+ depfile: bool
+ capture: bool
+ depends: T.List[T.Union['BuildTargetHolder', 'CustomTargetHolder']]