aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurin-Luis Lehning <65224843+e820@users.noreply.github.com>2021-03-07 22:47:54 +0100
committerXavier Claessens <xclaesse@gmail.com>2021-03-10 08:55:22 -0500
commit2607510b1818b78b4462d43eef84ee632b15981b (patch)
tree61473cc389fc15510be32bab69190fa5d0c6bc0c
parent83c3c745103a254f45ef8b28c5a3e307795ee752 (diff)
downloadmeson-2607510b1818b78b4462d43eef84ee632b15981b.zip
meson-2607510b1818b78b4462d43eef84ee632b15981b.tar.gz
meson-2607510b1818b78b4462d43eef84ee632b15981b.tar.bz2
Add failing test cases & release snippet
-rw-r--r--docs/markdown/snippets/fstrings.md7
-rw-r--r--mesonbuild/interpreterbase.py2
-rw-r--r--test cases/failing/113 invalid fstring/meson.build4
-rw-r--r--test cases/failing/113 invalid fstring/test.json7
-rw-r--r--test cases/failing/114 invalid fstring/meson.build3
-rw-r--r--test cases/failing/114 invalid fstring/test.json7
6 files changed, 29 insertions, 1 deletions
diff --git a/docs/markdown/snippets/fstrings.md b/docs/markdown/snippets/fstrings.md
new file mode 100644
index 0000000..a797aaa
--- /dev/null
+++ b/docs/markdown/snippets/fstrings.md
@@ -0,0 +1,7 @@
+## Introducing format strings to the Meson language
+
+In addition to the conventional `'A string @0@ to be formatted @1@'.format(n, m)`
+method of formatting strings in the Meson DSL, there's now the additional
+`f'A string @n@ to be formatted @m@'` notation that provides a non-positional
+and clearer alternative. Meson's format strings are currently restricted to
+identity-expressions, meaning `f'format {'m' + 'e'}'` will not parse.
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py
index bc0c932..206a81e 100644
--- a/mesonbuild/interpreterbase.py
+++ b/mesonbuild/interpreterbase.py
@@ -936,7 +936,7 @@ The result of this is undefined and will become a hard error in a future Meson r
try:
val = self.variables[var]
if not isinstance(val, (str, int, float, bool)):
- raise InvalidCode(f'Identifier {var} does not name a formattable variable.')
+ raise InvalidCode(f'Identifier "{var}" does not name a formattable variable.')
return str(val)
except KeyError:
diff --git a/test cases/failing/113 invalid fstring/meson.build b/test cases/failing/113 invalid fstring/meson.build
new file mode 100644
index 0000000..dd22f56
--- /dev/null
+++ b/test cases/failing/113 invalid fstring/meson.build
@@ -0,0 +1,4 @@
+project('invalid-fstring', 'c')
+
+dict = {'key': true}
+s = f'invalid fstring: @dict@'
diff --git a/test cases/failing/113 invalid fstring/test.json b/test cases/failing/113 invalid fstring/test.json
new file mode 100644
index 0000000..3b35165
--- /dev/null
+++ b/test cases/failing/113 invalid fstring/test.json
@@ -0,0 +1,7 @@
+{
+ "stdout": [
+ {
+ "line": "test cases/failing/113 invalid fstring/meson.build:4:0: ERROR: Identifier \"dict\" does not name a formattable variable."
+ }
+ ]
+}
diff --git a/test cases/failing/114 invalid fstring/meson.build b/test cases/failing/114 invalid fstring/meson.build
new file mode 100644
index 0000000..973df30
--- /dev/null
+++ b/test cases/failing/114 invalid fstring/meson.build
@@ -0,0 +1,3 @@
+project('invalid-fstring', 'c')
+
+z = f'invalid fstring: @foo@'
diff --git a/test cases/failing/114 invalid fstring/test.json b/test cases/failing/114 invalid fstring/test.json
new file mode 100644
index 0000000..2a8155c
--- /dev/null
+++ b/test cases/failing/114 invalid fstring/test.json
@@ -0,0 +1,7 @@
+{
+ "stdout": [
+ {
+ "line": "test cases/failing/114 invalid fstring/meson.build:3:0: ERROR: Identifier \"foo\" does not name a variable."
+ }
+ ]
+}