aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-06-01 20:44:32 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-06-15 12:48:53 -0700
commit2ac9b323918e8c61c4707fbd79d45cf1c6eecfd0 (patch)
tree784d8f3ae230247d25ac3cb714573af8844a64d6 /mesonbuild/interpreter
parentd064466e8bffb958d75cab30f68ae17c2c022b92 (diff)
downloadmeson-2ac9b323918e8c61c4707fbd79d45cf1c6eecfd0.zip
meson-2ac9b323918e8c61c4707fbd79d45cf1c6eecfd0.tar.gz
meson-2ac9b323918e8c61c4707fbd79d45cf1c6eecfd0.tar.bz2
interpreter: Do not create Generator in GeneratorHolder
This is an odd pattern, not the way most Holders work, and would be problematic if a method wanted to return a Generator.
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r--mesonbuild/interpreter/interpreter.py11
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py7
2 files changed, 10 insertions, 8 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 1a7d2fc..cb513f7 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -267,7 +267,7 @@ class Interpreter(InterpreterBase):
self.ast = ast
self.sanity_check_ast()
self.builtin.update({'meson': MesonMain(build, self)})
- self.generators = []
+ self.generators: T.List['GeneratorHolder'] = []
self.processed_buildfiles = set() # type: T.Set[str]
self.project_args_frozen = False
self.global_args_frozen = False # implies self.project_args_frozen
@@ -1954,10 +1954,11 @@ This will become a hard error in the future.''' % kwargs['input'], location=self
@permittedKwargs({'arguments', 'output', 'depends', 'depfile', 'capture',
'preserve_path_from'})
- def func_generator(self, node, args, kwargs):
- gen = GeneratorHolder(self, args, kwargs)
- self.generators.append(gen)
- return gen
+ def func_generator(self, node: mparser.FunctionNode, args, kwargs) -> GeneratorHolder:
+ gen = build.Generator(args, kwargs)
+ holder = GeneratorHolder(self, gen, self)
+ self.generators.append(holder)
+ return holder
@typed_pos_args('benchmark', str, (ExecutableHolder, JarHolder, ExternalProgramHolder, mesonlib.File))
@typed_kwargs('benchmark', *TEST_KWARGS)
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index f7c8466..8913b21 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -621,11 +621,12 @@ class ExternalLibraryHolder(InterpreterObject, ObjectHolder[ExternalLibrary]):
return DependencyHolder(pdep, self.subproject)
class GeneratorHolder(InterpreterObject, ObjectHolder[build.Generator]):
+
@FeatureNewKwargs('generator', '0.43.0', ['capture'])
- def __init__(self, interp, args, kwargs):
- self.interpreter = interp
+ def __init__(self, gen: 'build.Generator', interpreter: 'Interpreter'):
InterpreterObject.__init__(self)
- ObjectHolder.__init__(self, build.Generator(args, kwargs), interp.subproject)
+ ObjectHolder.__init__(self, gen, interpreter.subproject)
+ self.interpreter = interpreter
self.methods.update({'process': self.process_method})
@FeatureNewKwargs('generator.process', '0.45.0', ['preserve_path_from'])