diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-09-12 16:53:54 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2021-09-25 12:44:11 +0200 |
commit | c0efa7ab22f8900f6fa1dadf0d306ec375569c8d (patch) | |
tree | 3880366cb1cb71b628e147f1e3d444436c5928f7 /mesonbuild/interpreter | |
parent | 6b00c7dc810131da65029598b97abbcf3584067c (diff) | |
download | meson-c0efa7ab22f8900f6fa1dadf0d306ec375569c8d.zip meson-c0efa7ab22f8900f6fa1dadf0d306ec375569c8d.tar.gz meson-c0efa7ab22f8900f6fa1dadf0d306ec375569c8d.tar.bz2 |
interpreter: Add FeatureNew check
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r-- | mesonbuild/interpreter/primitives/string.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/primitives/string.py b/mesonbuild/interpreter/primitives/string.py index 82da6ce..d9c441a 100644 --- a/mesonbuild/interpreter/primitives/string.py +++ b/mesonbuild/interpreter/primitives/string.py @@ -21,6 +21,11 @@ from ...interpreterbase import ( InvalidArguments, ) +from ...mparser import ( + MethodNode, + StringNode, + ArrayNode, +) if T.TYPE_CHECKING: @@ -105,6 +110,13 @@ class StringHolder(ObjectHolder[str]): @noKwargs @typed_pos_args('str.join', varargs=str) def join_method(self, args: T.Tuple[T.List[str]], kwargs: TYPE_kwargs) -> str: + # Implement some basic FeatureNew check on the AST level + assert isinstance(self.current_node, MethodNode) + n_args = self.current_node.args.arguments + if len(n_args) != 1 or not isinstance(n_args[0], ArrayNode) or not all(isinstance(x, StringNode) for x in n_args[0].args.arguments): + FeatureNew.single_use('str.join (varargs)', '0.60.0', self.subproject, 'List-flattening and variadic arguments') + + # Actual implementation return self.held_object.join(args[0]) @noKwargs |