aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/interpreterbase/interpreterbase.py
diff options
context:
space:
mode:
authorPeter Lesslie <pclesslie@gmail.com>2022-04-15 15:02:14 -0500
committerEli Schwartz <eschwartz93@gmail.com>2022-05-01 12:47:37 -0400
commitd771fc7d0b45f8fa66f6570720fba73941de67cd (patch)
treec75bc9db23d033ed8caaf9a2a979ad3f0e77fbd1 /mesonbuild/interpreterbase/interpreterbase.py
parent78a6f3bd5c292afb68be7f4fbcd0e8c8ba0e3236 (diff)
downloadmeson-d771fc7d0b45f8fa66f6570720fba73941de67cd.zip
meson-d771fc7d0b45f8fa66f6570720fba73941de67cd.tar.gz
meson-d771fc7d0b45f8fa66f6570720fba73941de67cd.tar.bz2
Add support for multiline f-strings
+ Extend the parser to recognize the multiline f-strings, which the documentation already implies will work. The syntax is like: ``` x = 'hello' y = 'world' msg = f'''This is a multiline string. Sending a message: '@x@ @y@' ''' ``` which produces: ``` This is a multiline string. Sending a message: 'hello world' ``` + Added some f-string tests cases to "62 string arithmetic" to exercise the new behavior.
Diffstat (limited to 'mesonbuild/interpreterbase/interpreterbase.py')
-rw-r--r--mesonbuild/interpreterbase/interpreterbase.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/mesonbuild/interpreterbase/interpreterbase.py b/mesonbuild/interpreterbase/interpreterbase.py
index 85aabd1..f9a3b07 100644
--- a/mesonbuild/interpreterbase/interpreterbase.py
+++ b/mesonbuild/interpreterbase/interpreterbase.py
@@ -217,7 +217,10 @@ class InterpreterBase:
elif isinstance(cur, mparser.TernaryNode):
return self.evaluate_ternary(cur)
elif isinstance(cur, mparser.FormatStringNode):
- return self.evaluate_fstring(cur)
+ if isinstance(cur, mparser.MultilineFormatStringNode):
+ return self.evaluate_multiline_fstring(cur)
+ else:
+ return self.evaluate_fstring(cur)
elif isinstance(cur, mparser.ContinueNode):
raise ContinueRequest()
elif isinstance(cur, mparser.BreakNode):
@@ -367,6 +370,10 @@ class InterpreterBase:
else:
return self.evaluate_statement(node.falseblock)
+ @FeatureNew('multiline format strings', '0.63.0')
+ def evaluate_multiline_fstring(self, node: mparser.MultilineFormatStringNode) -> InterpreterObject:
+ return self.evaluate_fstring(node)
+
@FeatureNew('format strings', '0.58.0')
def evaluate_fstring(self, node: mparser.FormatStringNode) -> InterpreterObject:
assert isinstance(node, mparser.FormatStringNode)