Add more tests for multi-line strings and update docs

pull/3447/head
Nirbheek Chauhan 7 years ago committed by Jussi Pakkanen
parent cb0960a91e
commit a5b99dce5d
  1. 3
      docs/markdown/Syntax.md
  2. 22
      docs/markdown/snippets/more-escape-sequences.md
  3. 10
      test cases/common/32 multiline string/meson.build
  4. 4
      test cases/common/42 string operations/meson.build

@ -131,7 +131,8 @@ int main (int argc, char ** argv) {
}'''
```
This can also be combined with the string formatting functionality
These are raw strings that do not support the escape sequences listed above.
These strings can also be combined with the string formatting functionality
described below.
#### String formatting

@ -1,17 +1,15 @@
## String escape character update
## String escape character sequence update
The strings (both single-quoted and triple-quoted) in meson has been taught the
same set of escape sequences as in Python. It is therefore now possible to use
arbitrary bytes in strings, like for example NUL (`\0`) and other ASCII control
characters. See the chapter about *Strings* in *Syntax* for more details.
Single-quoted strings in meson have been taught the same set of escape
sequences as in Python. It is therefore now possible to use arbitrary bytes in
strings, like for example `NUL` (`\0`) and other ASCII control characters. See
the chapter about [*Strings* in *Syntax*](Syntax.md#strings) for more
details.
Potential backwards compatibility issue: Any valid escape sequence according to
the new rules will be interpreted as an escape sequence instead of the literal
characters. Previously only single-quote strings supported escape sequences and
the supported sequences were `\'`, `\\` and `\n`.
characters. Previously only the following escape sequences were supported in
single-quote strings: `\'`, `\\` and `\n`.
The most likely breakage is usage of backslash-n in triple-quoted strings. It
is now written in the same way as in single-quoted strings: `\\n` instead of
`\n`. In general it is now recommended to escape any usage of backslash.
However, backslash-c (`\c`), for example, is still backslash-c because it isn't
a valid escape sequence.
Note that the behaviour of triple-quoted (multiline) strings has not changed.
They behave like raw strings and do not support any escape sequences.

@ -23,3 +23,13 @@ quote2 = '\''
if quote1 != quote2
error('Single quote quoting is broken.')
endif
cc = meson.get_compiler('c')
prog = '''
int main(int argc, char **argv) {
int num = 1;
printf("%d\n", num);
return 0;
}'''
assert(cc.compiles(prog), 'multline test compile failed')

@ -87,6 +87,8 @@ bs_nl = '''\
bs_bs_n = '''\\n'''
bs_bs_nl = '''\\
'''
bs_bs = '''\\'''
bs = '''\'''
assert('\c' == bs_c, 'Single backslash broken')
assert('\\c' == bs_c, 'Double backslash broken')
@ -97,3 +99,5 @@ assert('\\n' == bs_n, 'Double backslash broken before n')
assert('\\\n' == bs_nl, 'Three backslash broken before n')
assert('\\\\n' == bs_bs_n, 'Four backslash broken before n')
assert('\\\\\n' == bs_bs_nl, 'Five backslash broken before n')
assert('\\\\' == bs_bs, 'Double-backslash broken')
assert('\\' == bs, 'Backslash broken')

Loading…
Cancel
Save