diff options
author | Peter Lesslie <pclesslie@gmail.com> | 2022-04-15 15:02:14 -0500 |
---|---|---|
committer | Eli Schwartz <eschwartz93@gmail.com> | 2022-05-01 12:47:37 -0400 |
commit | d771fc7d0b45f8fa66f6570720fba73941de67cd (patch) | |
tree | c75bc9db23d033ed8caaf9a2a979ad3f0e77fbd1 /mesonbuild/interpreterbase/interpreterbase.py | |
parent | 78a6f3bd5c292afb68be7f4fbcd0e8c8ba0e3236 (diff) | |
download | meson-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.py | 9 |
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) |