From: Marek Polacek Date: Tue, 18 Jul 2023 17:26:39 +0000 (-0400) Subject: c++: Add tests for P2621, no UB in lexer [PR110340] X-Git-Tag: basepoints/gcc-15~7513 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fca089e8a47314a40ad93527ba9f9d0d374b3afb;p=thirdparty%2Fgcc.git 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. --- 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 000000000000..37d0388413c1 --- /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 000000000000..c5583e06dd63 --- /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;