OSDN Git Service

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