aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2021-06-08 14:38:42 -0400
committerJason Merrill <jason@redhat.com>2021-06-08 15:34:43 -0400
commit924e02553af64b10c485711d635c0bc0265a8743 (patch)
tree45afa5bddc6a3a0d426ab0e145e2c1986a50ef07 /gcc
parent5668b5d09ae8f942e79b6d4473ba285a496b9a57 (diff)
downloadgcc-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.c4
-rw-r--r--gcc/testsuite/g++.dg/cpp23/mixed-concat1.C21
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" }
+}