diff options
author | Jason Merrill <jason@redhat.com> | 2021-06-08 14:38:42 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2021-06-08 15:34:43 -0400 |
commit | 924e02553af64b10c485711d635c0bc0265a8743 (patch) | |
tree | 45afa5bddc6a3a0d426ab0e145e2c1986a50ef07 /gcc | |
parent | 5668b5d09ae8f942e79b6d4473ba285a496b9a57 (diff) | |
download | gcc-924e02553af64b10c485711d635c0bc0265a8743.zip gcc-924e02553af64b10c485711d635c0bc0265a8743.tar.gz gcc-924e02553af64b10c485711d635c0bc0265a8743.tar.bz2 |
c++: Test for mixed string literal concatenation
From wg21.link/p2201r1
gcc/cp/ChangeLog:
* parser.c (cp_parser_string_literal): Adjust diagnostic.
gcc/testsuite/ChangeLog:
* g++.dg/cpp23/mixed-concat1.C: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/parser.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp23/mixed-concat1.C | 21 |
2 files changed, 23 insertions, 2 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 24f248a..d59a829 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -4378,8 +4378,8 @@ cp_parser_string_literal (cp_parser *parser, bool translate, bool wide_ok, rich_location rich_loc (line_table, tok->location); rich_loc.add_range (last_tok_loc); error_at (&rich_loc, - "unsupported non-standard concatenation " - "of string literals"); + "concatenation of string literals with " + "conflicting encoding prefixes"); } } diff --git a/gcc/testsuite/g++.dg/cpp23/mixed-concat1.C b/gcc/testsuite/g++.dg/cpp23/mixed-concat1.C new file mode 100644 index 0000000..d69fafc --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp23/mixed-concat1.C @@ -0,0 +1,21 @@ +// Test from P2201R1 +// { dg-do compile { target c++11 } } + +void f() { + + { auto a = L"" u""; } // { dg-error "concatenation" } + { auto a = L"" u8""; } // { dg-error "concatenation" } + { auto a = L"" U""; } // { dg-error "concatenation" } + + { auto a = u8"" L""; } // { dg-error "concatenation" } + { auto a = u8"" u""; } // { dg-error "concatenation" } + { auto a = u8"" U""; } // { dg-error "concatenation" } + + { auto a = u"" L""; } // { dg-error "concatenation" } + { auto a = u"" u8""; } // { dg-error "concatenation" } + { auto a = u"" U""; } // { dg-error "concatenation" } + + { auto a = U"" L""; } // { dg-error "concatenation" } + { auto a = U"" u""; } // { dg-error "concatenation" } + { auto a = U"" u8""; } // { dg-error "concatenation" } +} |