aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreter
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2021-11-04 18:46:09 -0400
committerEli Schwartz <eschwartz@archlinux.org>2021-11-04 18:57:14 -0400
commit558f9fed9e4136f858b58749fd35127a73229cd2 (patch)
tree5c5256801e73b7d739b5201db6a8b36ee147abfe /mesonbuild/interpreter
parent1104b82137da55ecb4f13348bbb020d64e4fc78b (diff)
downloadmeson-558f9fed9e4136f858b58749fd35127a73229cd2.zip
meson-558f9fed9e4136f858b58749fd35127a73229cd2.tar.gz
meson-558f9fed9e4136f858b58749fd35127a73229cd2.tar.bz2
fix regression that broke string.format with list objects
String formatting should validly assume that printing a list means printing the list itself. Instead, something like this broke: 'one is: @0@ and two is: @1@'.format(['foo', 'bar'], ['baz']) which would evaluate as: 'one is: foo and two is: bar' or: 'the value of array option foobar is: @0@'.format(get_option('foobar')) which should evaluate with '-Dfoobar=[]' as 'the value of array option foobar is: []' But instead produced: meson.build:7:0: ERROR: Format placeholder @0@ out of range. Fixes #9530
Diffstat (limited to 'mesonbuild/interpreter')
-rw-r--r--mesonbuild/interpreter/primitives/string.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/mesonbuild/interpreter/primitives/string.py b/mesonbuild/interpreter/primitives/string.py
index 3f8df5e..a5fc992 100644
--- a/mesonbuild/interpreter/primitives/string.py
+++ b/mesonbuild/interpreter/primitives/string.py
@@ -13,6 +13,7 @@ from ...interpreterbase import (
MesonOperator,
FeatureNew,
typed_operator,
+ noArgsFlattening,
noKwargs,
noPosargs,
typed_pos_args,
@@ -85,6 +86,7 @@ class StringHolder(ObjectHolder[str]):
def endswith_method(self, args: T.Tuple[str], kwargs: TYPE_kwargs) -> bool:
return self.held_object.endswith(args[0])
+ @noArgsFlattening
@noKwargs
@typed_pos_args('str.format', varargs=object)
def format_method(self, args: T.Tuple[T.List[object]], kwargs: TYPE_kwargs) -> str: