mirror of
https://github.com/mesonbuild/meson.git
synced 2026-11-06 05:16:42 +00:00
ast/interpreter, rewriter: make flatten_args() recursive
This also enables using it instead of flatten(). Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
1 parent
879e644bb3
commit
48c5f14d99
3 files changed
+8
-6
No files matched your search
@@ -30,8 +30,6 @@ from ..interpreterbase import (
|
||||
InterpreterObject,
|
||||
)
|
||||
|
||||
from ..interpreterbase.helpers import flatten
|
||||
|
||||
from ..interpreter import (
|
||||
StringHolder,
|
||||
BooleanHolder,
|
||||
@@ -723,7 +721,7 @@ class AstInterpreter(InterpreterBase):
|
||||
else:
|
||||
raise TypeError
|
||||
|
||||
rtvals: T.List[T.Any] = flatten([self.node_to_runtime_value(sn) for sn in nodes])
|
||||
rtvals: T.List[T.Any] = self.flatten_args(nodes)
|
||||
return [src_to_abs(x) for x in rtvals]
|
||||
|
||||
def flatten_args(self, args: T.Sequence[TYPE_nvar]) -> T.List[TYPE_var]:
|
||||
@@ -737,10 +735,12 @@ class AstInterpreter(InterpreterBase):
|
||||
if resolved is not None:
|
||||
if not isinstance(resolved, list):
|
||||
resolved = [resolved]
|
||||
flattened_args += resolved
|
||||
flattened_args += self.flatten_args(resolved)
|
||||
elif isinstance(i, (str, bool, int, float, dict, UnknownValue, IntrospectionFile,
|
||||
IntrospectionBuildTarget, IntrospectionDependency)):
|
||||
flattened_args += [i]
|
||||
elif isinstance(i, list):
|
||||
flattened_args += self.flatten_args(i)
|
||||
else:
|
||||
raise NotImplementedError(f'flatten_args is missing a case for {type(i)}')
|
||||
return flattened_args
|
||||
|
||||
@@ -12,7 +12,6 @@ from __future__ import annotations
|
||||
from .ast import IntrospectionInterpreter, BUILD_TARGET_FUNCTIONS, AstConditionLevel, AstIDGenerator, AstIndentationGenerator, AstPrinter
|
||||
from .ast.interpreter import IntrospectionBuildTarget, IntrospectionDependency, _symbol
|
||||
from .interpreterbase import UnknownValue
|
||||
from .interpreterbase.helpers import flatten
|
||||
from mesonbuild.mesonlib import MesonException, pathname_sort_key, relpath, setup_vsenv
|
||||
from . import mlog, environment
|
||||
from functools import wraps
|
||||
@@ -758,7 +757,7 @@ class Rewriter:
|
||||
tgt_function.args.kwargs[extra_files_idnode] = new_extra_files_node
|
||||
|
||||
newfiles_relto = self.get_relto(target.node, chosen)
|
||||
old_src_list: T.List[T.Any] = flatten([self.interpreter.node_to_runtime_value(sn) for sn in old])
|
||||
old_src_list: T.List[T.Any] = self.interpreter.flatten_args(list(old))
|
||||
|
||||
if op == 'src_add':
|
||||
name = 'Source'
|
||||
|
||||
@@ -8,3 +8,6 @@ project(
|
||||
)
|
||||
|
||||
dep1 = dependency('zlib', required: false, default_options: {'foo': 'bar'})
|
||||
|
||||
# a dict can also be a positional argument; it must not be flattened away
|
||||
conf = configuration_data({'foo': 'bar'})
|
||||
Reference in new issue
Block a user