OSDN Git Service

Some raw string changes from N3077
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / ext / raw-string-2.C
1 // { dg-do run }
2 // { dg-options "-std=c++0x" }
3
4 #define R
5 #define u
6 #define uR
7 #define U
8 #define UR
9 #define u8
10 #define u8R
11 #define L
12 #define LR
13
14 const char s00[] = R"(a)" "(b)";
15 const char s01[] = "(a)" R"*(b)*";
16 const char s02[] = R"(a)" R"(b)";
17 const char s03[] = R"-(a)-" u8"(b)";
18 const char s04[] = "(a)" u8R"MNOPQRSTUVWXYZ(b)MNOPQRSTUVWXYZ";
19 const char s05[] = R"(a)" u8R"wxyzABCDEFGHIJKL(b)wxyzABCDEFGHIJKL";
20 const char s06[] = u8R";[(a);[" "(b)";
21 const char s07[] = u8"(a)" R"(b)";
22 const char s08[] = u8R"(a)" R"_{}#[]<>%:;.?*+-(b)_{}#[]<>%:;.?*+-";
23 const char s09[] = u8R"/^&|~!=,"'(a)/^&|~!=,"'" u8"(b)";
24 const char s10[] = u8"(a)" u8R"0123456789abcdef(b)0123456789abcdef";
25 const char s11[] = u8R"ghijklmnopqrstuv(a)ghijklmnopqrstuv" u8R"w(b)w";
26
27 const char16_t u03[] = R"-(a)-" u"(b)";
28 const char16_t u04[] = "(a)" uR"MNOPQRSTUVWXYZ(b)MNOPQRSTUVWXYZ";
29 const char16_t u05[] = R"(a)" uR"wxyzABCDEFGHIJKL(b)wxyzABCDEFGHIJKL";
30 const char16_t u06[] = uR";[(a);[" "(b)";
31 const char16_t u07[] = u"(a)" R"(b)";
32 const char16_t u08[] = uR"(a)" R"_{}#[]<>%:;.?*+-(b)_{}#[]<>%:;.?*+-";
33 const char16_t u09[] = uR"/^&|~!=,"'(a)/^&|~!=,"'" u"(b)";
34 const char16_t u10[] = u"(a)" uR"0123456789abcdef(b)0123456789abcdef";
35 const char16_t u11[] = uR"ghijklmnopqrstuv(a)ghijklmnopqrstuv" uR"w(b)w";
36
37 const char32_t U03[] = R"-(a)-" U"(b)";
38 const char32_t U04[] = "(a)" UR"MNOPQRSTUVWXYZ(b)MNOPQRSTUVWXYZ";
39 const char32_t U05[] = R"(a)" UR"wxyzABCDEFGHIJKL(b)wxyzABCDEFGHIJKL";
40 const char32_t U06[] = UR";[(a);[" "(b)";
41 const char32_t U07[] = U"(a)" R"(b)";
42 const char32_t U08[] = UR"(a)" R"_{}#[]<>%:;.?*+-(b)_{}#[]<>%:;.?*+-";
43 const char32_t U09[] = UR"/^&|~!=,"'(a)/^&|~!=,"'" U"(b)";
44 const char32_t U10[] = U"(a)" UR"0123456789abcdef(b)0123456789abcdef";
45 const char32_t U11[] = UR"ghijklmnopqrstuv(a)ghijklmnopqrstuv" UR"w(b)w";
46
47 const wchar_t L03[] = R"-(a)-" L"(b)";
48 const wchar_t L04[] = "(a)" LR"MNOPQRSTUVWXYZ(b)MNOPQRSTUVWXYZ";
49 const wchar_t L05[] = R"(a)" LR"wxyzABCDEFGHIJKL(b)wxyzABCDEFGHIJKL";
50 const wchar_t L06[] = LR";[(a);[" "(b)";
51 const wchar_t L07[] = L"(a)" R"(b)";
52 const wchar_t L08[] = LR"(a)" R"_{}#[]<>%:;.?*+-(b)_{}#[]<>%:;.?*+-";
53 const wchar_t L09[] = LR"/^&|~!=,"'(a)/^&|~!=,"'" L"(b)";
54 const wchar_t L10[] = L"(a)" LR"0123456789abcdef(b)0123456789abcdef";
55 const wchar_t L11[] = LR"ghijklmnopqrstuv(a)ghijklmnopqrstuv" LR"w(b)w";
56
57 int
58 main (void)
59 {
60 #define TEST(str, val) \
61   if (sizeof (str) != sizeof (val) \
62       || __builtin_memcmp (str, val, sizeof (str)) != 0) \
63     __builtin_abort ()
64   TEST (s00, "a(b)");
65   TEST (s01, "(a)b");
66   TEST (s02, "ab");
67   TEST (s03, "a(b)");
68   TEST (s04, "(a)b");
69   TEST (s05, "ab");
70   TEST (s06, "a(b)");
71   TEST (s07, "(a)b");
72   TEST (s08, "ab");
73   TEST (s09, "a(b)");
74   TEST (s10, "(a)b");
75   TEST (s11, "ab");
76   TEST (u03, u"a(b)");
77   TEST (u04, u"(a)b");
78   TEST (u05, u"ab");
79   TEST (u06, u"a(b)");
80   TEST (u07, u"(a)b");
81   TEST (u08, u"ab");
82   TEST (u09, u"a(b)");
83   TEST (u10, u"(a)b");
84   TEST (u11, u"ab");
85   TEST (U03, U"a(b)");
86   TEST (U04, U"(a)b");
87   TEST (U05, U"ab");
88   TEST (U06, U"a(b)");
89   TEST (U07, U"(a)b");
90   TEST (U08, U"ab");
91   TEST (U09, U"a(b)");
92   TEST (U10, U"(a)b");
93   TEST (U11, U"ab");
94   TEST (L03, L"a(b)");
95   TEST (L04, L"(a)b");
96   TEST (L05, L"ab");
97   TEST (L06, L"a(b)");
98   TEST (L07, L"(a)b");
99   TEST (L08, L"ab");
100   TEST (L09, L"a(b)");
101   TEST (L10, L"(a)b");
102   TEST (L11, L"ab");
103   return 0;
104 }