diff options
author | Marek Polacek <polacek@redhat.com> | 2023-07-18 13:26:39 -0400 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2023-07-18 13:32:13 -0400 |
commit | fca089e8a47314a40ad93527ba9f9d0d374b3afb (patch) | |
tree | 66d79af2ae7fb8f3965212afd78e4646d811a559 | |
parent | 05fc7db93452841280ddc5cdf71b33498ed576dc (diff) | |
download | gcc-fca089e8a47314a40ad93527ba9f9d0d374b3afb.zip gcc-fca089e8a47314a40ad93527ba9f9d0d374b3afb.tar.gz gcc-fca089e8a47314a40ad93527ba9f9d0d374b3afb.tar.bz2 |
c++: Add tests for P2621, no UB in lexer [PR110340]
C++26 P2621 removes UB in the lexer and either makes the construct valid
or ill-formed. We're already handling this correctly so this patch only
adds tests.
PR c++/110340
gcc/testsuite/ChangeLog:
* g++.dg/cpp/string-4.C: New test.
* g++.dg/cpp/ucn-2.C: New test.
-rw-r--r-- | gcc/testsuite/g++.dg/cpp/string-4.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp/ucn-2.C | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp/string-4.C b/gcc/testsuite/g++.dg/cpp/string-4.C new file mode 100644 index 0000000..37d0388 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp/string-4.C @@ -0,0 +1,6 @@ +// P2621R2 - UB? In My Lexer? +// { dg-do compile } + +// [lex.phases] If a U+0027 APOSTROPHE or a U+0022 QUOTATION +// MARK matches the last category, the program is ill-formed. +const char * foo=" // { dg-error "terminating|expected" } diff --git a/gcc/testsuite/g++.dg/cpp/ucn-2.C b/gcc/testsuite/g++.dg/cpp/ucn-2.C new file mode 100644 index 0000000..c5583e0 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp/ucn-2.C @@ -0,0 +1,15 @@ +// P2621R2 - UB? In My Lexer? +// { dg-do compile } + +// Line splicing can form a universal-character-name [lex.charset]. +int \\ +u\ +0\ +3\ +9\ +1 = 0; + +// [cpp.concat] Concatenation can form a universal-character-name. +#define CONCAT(x,y) x##y + +int CONCAT(\,u0393)=0; |