diff options
author | Laurin-Luis Lehning <65224843+e820@users.noreply.github.com> | 2021-03-07 23:25:39 +0100 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2021-03-10 08:55:22 -0500 |
commit | f7dd11133349cb459bf6a829b33443ab8e3694d4 (patch) | |
tree | 5cf60f6bab067f0f98b1315c577bfc1b1fe240cc | |
parent | 71e9909ffd9dac31504d115251ee5ab8f84420c3 (diff) | |
download | meson-f7dd11133349cb459bf6a829b33443ab8e3694d4.zip meson-f7dd11133349cb459bf6a829b33443ab8e3694d4.tar.gz meson-f7dd11133349cb459bf6a829b33443ab8e3694d4.tar.bz2 |
Some documentation language adjustments & improved error messages
-rw-r--r-- | docs/markdown/Syntax.md | 10 | ||||
-rw-r--r-- | docs/markdown/snippets/fstrings.md | 2 | ||||
-rw-r--r-- | mesonbuild/interpreterbase.py | 3 | ||||
-rw-r--r-- | test cases/failing/113 invalid fstring/test.json | 2 |
4 files changed, 13 insertions, 4 deletions
diff --git a/docs/markdown/Syntax.md b/docs/markdown/Syntax.md index 50287b2..9ed3227 100644 --- a/docs/markdown/Syntax.md +++ b/docs/markdown/Syntax.md @@ -198,7 +198,15 @@ s = f'int: @n@, string: @m@' ``` Currently only identity-expressions are supported inside of format -strings. +strings, meaning you cannot use arbitrary Meson expressions inside of them. + +```meson +n = 10 +m = 5 + +# The following is not a valid format string +s = f'result: @n + m@' +``` ### String methods diff --git a/docs/markdown/snippets/fstrings.md b/docs/markdown/snippets/fstrings.md index df7dc2c..45a238c 100644 --- a/docs/markdown/snippets/fstrings.md +++ b/docs/markdown/snippets/fstrings.md @@ -1,7 +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 +method of formatting strings in the Meson language, 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 01bfdaa..ec6ddc8 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -937,7 +937,8 @@ 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 ' + + '(has to be an integer, a string, a floating point number or a boolean).') return str(val) except KeyError: diff --git a/test cases/failing/113 invalid fstring/test.json b/test cases/failing/113 invalid fstring/test.json index 6834d80..17442fd 100644 --- a/test cases/failing/113 invalid fstring/test.json +++ b/test cases/failing/113 invalid fstring/test.json @@ -1,7 +1,7 @@ { "stdout": [ { - "line": "test cases/failing/113 invalid fstring/meson.build:4:0: ERROR: Identifier \"dict\" does not name a formattable variable." + "line": "test cases/failing/113 invalid fstring/meson.build:4:0: ERROR: Identifier \"dict\" does not name a formattable variable (has to be an integer, a string, a floating point number or a boolean)." } ] } |