diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2018-04-21 14:53:20 +0530 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2018-04-21 22:57:19 +0300 |
commit | a5b99dce5dbe5d9e681fef59c4efebe2c80c5ce5 (patch) | |
tree | 843e1de8e57e3d5eb946dbb0158f2e2be437209b | |
parent | cb0960a91e1b250a00c0a1e4a40b7e86bc70a97d (diff) | |
download | meson-a5b99dce5dbe5d9e681fef59c4efebe2c80c5ce5.zip meson-a5b99dce5dbe5d9e681fef59c4efebe2c80c5ce5.tar.gz meson-a5b99dce5dbe5d9e681fef59c4efebe2c80c5ce5.tar.bz2 |
Add more tests for multi-line strings and update docs
-rw-r--r-- | docs/markdown/Syntax.md | 3 | ||||
-rw-r--r-- | docs/markdown/snippets/more-escape-sequences.md | 22 | ||||
-rw-r--r-- | test cases/common/32 multiline string/meson.build | 10 | ||||
-rw-r--r-- | test cases/common/42 string operations/meson.build | 4 |
4 files changed, 26 insertions, 13 deletions
diff --git a/docs/markdown/Syntax.md b/docs/markdown/Syntax.md index 01c8c6e..30eedf8 100644 --- a/docs/markdown/Syntax.md +++ b/docs/markdown/Syntax.md @@ -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 diff --git a/docs/markdown/snippets/more-escape-sequences.md b/docs/markdown/snippets/more-escape-sequences.md index 2894079..ad78ce2 100644 --- a/docs/markdown/snippets/more-escape-sequences.md +++ b/docs/markdown/snippets/more-escape-sequences.md @@ -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. diff --git a/test cases/common/32 multiline string/meson.build b/test cases/common/32 multiline string/meson.build index 1f952f1..262cb15 100644 --- a/test cases/common/32 multiline string/meson.build +++ b/test cases/common/32 multiline string/meson.build @@ -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') diff --git a/test cases/common/42 string operations/meson.build b/test cases/common/42 string operations/meson.build index 9dfa866..6596142 100644 --- a/test cases/common/42 string operations/meson.build +++ b/test cases/common/42 string operations/meson.build @@ -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') |