1 // P2295R6 - Support for UTF-8 as a portable source file encoding
2 // This test intentionally contains various byte sequences which are not valid UTF-8
3 // { dg-do preprocess { target c++11 } }
4 // { dg-options "-finput-charset=UTF-8" }
6 char32_t a = U'€'; // { dg-warning "invalid UTF-8 character '<80>'" "" { target c++23 } }
7 char32_t b = U'¿'; // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } }
8 char32_t c = U'À'; // { dg-warning "invalid UTF-8 character '<c0>'" "" { target c++23 } }
9 char32_t d = U'Á'; // { dg-warning "invalid UTF-8 character '<c1>'" "" { target c++23 } }
10 char32_t e = U'õ'; // { dg-warning "invalid UTF-8 character '<f5>'" "" { target c++23 } }
11 char32_t f = U'ÿ'; // { dg-warning "invalid UTF-8 character '<ff>'" "" { target c++23 } }
12 char32_t g = U'Â'; // { dg-warning "invalid UTF-8 character '<c2>'" "" { target c++23 } }
13 char32_t h = U'à'; // { dg-warning "invalid UTF-8 character '<e0>'" "" { target c++23 } }
14 char32_t i = U'à€¿'; // { dg-warning "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } }
15 char32_t j = U'àŸ€'; // { dg-warning "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } }
16 char32_t k = U'à¿'; // { dg-warning "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } }
17 char32_t l = U'ì€'; // { dg-warning "invalid UTF-8 character '<ec><80>'" "" { target c++23 } }
18 char32_t m = U''; // { dg-warning "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } }
19 char32_t n = U'ð€€€'; // { dg-warning "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } }
20 char32_t o = U'�'; // { dg-warning "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } }
21 char32_t p = U''; // { dg-warning "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } }
22 char32_t q = U''; // { dg-warning "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } }
23 // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 }
24 auto A = U"߿ࠀ𐀀"; // { dg-bogus "invalid UTF-8 character" }
25 auto B = U"€"; // { dg-warning "invalid UTF-8 character '<80>'" "" { target c++23 } }
26 auto C = U"¿"; // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } }
27 auto D = U"À"; // { dg-warning "invalid UTF-8 character '<c0>'" "" { target c++23 } }
28 auto E = U"Á"; // { dg-warning "invalid UTF-8 character '<c1>'" "" { target c++23 } }
29 auto F = U"õ"; // { dg-warning "invalid UTF-8 character '<f5>'" "" { target c++23 } }
30 auto G = U"ÿ"; // { dg-warning "invalid UTF-8 character '<ff>'" "" { target c++23 } }
31 auto H = U"Â"; // { dg-warning "invalid UTF-8 character '<c2>'" "" { target c++23 } }
32 auto I = U"à"; // { dg-warning "invalid UTF-8 character '<e0>'" "" { target c++23 } }
33 auto J = U"à€¿"; // { dg-warning "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } }
34 auto K = U"àŸ€"; // { dg-warning "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } }
35 auto L = U"à¿"; // { dg-warning "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } }
36 auto M = U"ì€"; // { dg-warning "invalid UTF-8 character '<ec><80>'" "" { target c++23 } }
37 auto N = U""; // { dg-warning "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } }
38 auto O = U"ð€€€"; // { dg-warning "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } }
39 auto P = U"�"; // { dg-warning "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } }
40 auto Q = U""; // { dg-warning "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } }
41 auto R = U""; // { dg-warning "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } }
42 // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 }
43 auto A1 = UR"(߿ࠀ𐀀)"; // { dg-bogus "invalid UTF-8 character" }
44 auto B1 = UR"(€)"; // { dg-warning "invalid UTF-8 character '<80>'" "" { target c++23 } }
45 auto C1 = UR"(¿)"; // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } }
46 auto D1 = UR"(À)"; // { dg-warning "invalid UTF-8 character '<c0>'" "" { target c++23 } }
47 auto E1 = UR"(Á)"; // { dg-warning "invalid UTF-8 character '<c1>'" "" { target c++23 } }
48 auto F1 = UR"(õ)"; // { dg-warning "invalid UTF-8 character '<f5>'" "" { target c++23 } }
49 auto G1 = UR"(ÿ)"; // { dg-warning "invalid UTF-8 character '<ff>'" "" { target c++23 } }
50 auto H1 = UR"(Â)"; // { dg-warning "invalid UTF-8 character '<c2>'" "" { target c++23 } }
51 auto I1 = UR"(à)"; // { dg-warning "invalid UTF-8 character '<e0>'" "" { target c++23 } }
52 auto J1 = UR"(à€¿)"; // { dg-warning "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } }
53 auto K1 = UR"(àŸ€)"; // { dg-warning "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } }
54 auto L1 = UR"(à¿)"; // { dg-warning "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } }
55 auto M1 = UR"(ì€)"; // { dg-warning "invalid UTF-8 character '<ec><80>'" "" { target c++23 } }
56 auto N1 = UR"()"; // { dg-warning "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } }
57 auto O1 = UR"(ð€€€)"; // { dg-warning "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } }
58 auto P1 = UR"(�)"; // { dg-warning "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } }
59 auto Q1 = UR"()"; // { dg-warning "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } }
60 auto R1 = UR"()"; // { dg-warning "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } }
61 // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 }
62 auto A2 = u8"߿ࠀ𐀀"; // { dg-bogus "invalid UTF-8 character" }
63 auto B2 = u8"€"; // { dg-warning "invalid UTF-8 character '<80>'" "" { target c++23 } }
64 auto C2 = u8"¿"; // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } }
65 auto D2 = u8"À"; // { dg-warning "invalid UTF-8 character '<c0>'" "" { target c++23 } }
66 auto E2 = u8"Á"; // { dg-warning "invalid UTF-8 character '<c1>'" "" { target c++23 } }
67 auto F2 = u8"õ"; // { dg-warning "invalid UTF-8 character '<f5>'" "" { target c++23 } }
68 auto G2 = u8"ÿ"; // { dg-warning "invalid UTF-8 character '<ff>'" "" { target c++23 } }
69 auto H2 = u8"Â"; // { dg-warning "invalid UTF-8 character '<c2>'" "" { target c++23 } }
70 auto I2 = u8"à"; // { dg-warning "invalid UTF-8 character '<e0>'" "" { target c++23 } }
71 auto J2 = u8"à€¿"; // { dg-warning "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } }
72 auto K2 = u8"àŸ€"; // { dg-warning "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } }
73 auto L2 = u8"à¿"; // { dg-warning "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } }
74 auto M2 = u8"ì€"; // { dg-warning "invalid UTF-8 character '<ec><80>'" "" { target c++23 } }
75 auto N2 = u8""; // { dg-warning "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } }
76 auto O2 = u8"ð€€€"; // { dg-warning "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } }
77 auto P2 = u8"�"; // { dg-warning "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } }
78 auto Q2 = u8""; // { dg-warning "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } }
79 auto R2 = u8""; // { dg-warning "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } }
80 // { dg-warning "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 }