diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2023-02-26 02:12:29 -0500 |
---|---|---|
committer | Eli Schwartz <eschwartz@archlinux.org> | 2023-03-01 23:37:55 -0500 |
commit | a3f4f6c88f14ba9f176721bace861d705a11189c (patch) | |
tree | b1f9f532a952ab9bd4b0f2937c42ba329762bebe /mesonbuild/interpreter/interpreter.py | |
parent | 314382d6ff06d1fb59118492cbd5a65fd3c58e5c (diff) | |
download | meson-a3f4f6c88f14ba9f176721bace861d705a11189c.zip meson-a3f4f6c88f14ba9f176721bace861d705a11189c.tar.gz meson-a3f4f6c88f14ba9f176721bace861d705a11189c.tar.bz2 |
interpreter: report FeatureNew for kwargs to project()
We need to know the project minimum version before evaluating the rest
of the function. There's three basic approaches:
- try to set it inside KwargInfo
- just run a minimal version of func_project for this, then load
everything after
- drop down to the AST and set it before anything else
In order to handle FeatureNew emitted by a FunctionNode evaluated
before project() due to being inlined, such as `version: run_command()`,
only option 3 suffices, the rest all happen way too late. Since we have
just added AST handling support for erroring out, we can do that to set
the version as well.
Diffstat (limited to 'mesonbuild/interpreter/interpreter.py')
-rw-r--r-- | mesonbuild/interpreter/interpreter.py | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index c6602a5..0c058f6 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -528,6 +528,7 @@ class Interpreter(InterpreterBase, HoldableObject): def handle_meson_version(self, pv: str, location: mparser.BaseNode) -> None: if not mesonlib.version_compare(coredata.version, pv): raise InterpreterException.from_node(f'Meson version is {coredata.version} but project requires {pv}', node=location) + mesonlib.project_meson_versions[self.subproject] = pv def handle_meson_version_from_ast(self) -> None: if not self.ast.lines: @@ -1170,7 +1171,6 @@ class Interpreter(InterpreterBase, HoldableObject): # for things like deprecation testing. if kwargs['meson_version']: self.handle_meson_version(kwargs['meson_version'], node) - mesonlib.project_meson_versions[self.subproject] = kwargs['meson_version'] if os.path.exists(self.option_file): oi = optinterpreter.OptionInterpreter(self.subproject) |