// P2295R6 - Support for UTF-8 as a portable source file encoding // This test intentionally contains various byte sequences which are not valid UTF-8 // { dg-do preprocess { target c++11 } } // { dg-options "-finput-charset=UTF-8 -pedantic-errors" } char32_t a = U'�'; // { dg-error "invalid UTF-8 character '<80>'" "" { target c++23 } } char32_t b = U'�'; // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } } char32_t c = U'�'; // { dg-error "invalid UTF-8 character '<c0>'" "" { target c++23 } } char32_t d = U'�'; // { dg-error "invalid UTF-8 character '<c1>'" "" { target c++23 } } char32_t e = U'�'; // { dg-error "invalid UTF-8 character '<f5>'" "" { target c++23 } } char32_t f = U'�'; // { dg-error "invalid UTF-8 character '<ff>'" "" { target c++23 } } char32_t g = U'�'; // { dg-error "invalid UTF-8 character '<c2>'" "" { target c++23 } } char32_t h = U'�'; // { dg-error "invalid UTF-8 character '<e0>'" "" { target c++23 } } char32_t i = U'���'; // { dg-error "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } } char32_t j = U'���'; // { dg-error "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } } char32_t k = U'�'; // { dg-error "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } } char32_t l = U'�'; // { dg-error "invalid UTF-8 character '<ec><80>'" "" { target c++23 } } char32_t m = U'���'; // { dg-error "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } } char32_t n = U'����'; // { dg-error "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } } char32_t o = U'����'; // { dg-error "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } } char32_t p = U'����'; // { dg-error "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } } char32_t q = U'������'; // { dg-error "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } } // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 } auto A = U"߿ࠀ𐀀"; // { dg-bogus "invalid UTF-8 character" } auto B = U"�"; // { dg-error "invalid UTF-8 character '<80>'" "" { target c++23 } } auto C = U"�"; // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } } auto D = U"�"; // { dg-error "invalid UTF-8 character '<c0>'" "" { target c++23 } } auto E = U"�"; // { dg-error "invalid UTF-8 character '<c1>'" "" { target c++23 } } auto F = U"�"; // { dg-error "invalid UTF-8 character '<f5>'" "" { target c++23 } } auto G = U"�"; // { dg-error "invalid UTF-8 character '<ff>'" "" { target c++23 } } auto H = U"�"; // { dg-error "invalid UTF-8 character '<c2>'" "" { target c++23 } } auto I = U"�"; // { dg-error "invalid UTF-8 character '<e0>'" "" { target c++23 } } auto J = U"���"; // { dg-error "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } } auto K = U"���"; // { dg-error "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } } auto L = U"�"; // { dg-error "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } } auto M = U"�"; // { dg-error "invalid UTF-8 character '<ec><80>'" "" { target c++23 } } auto N = U"���"; // { dg-error "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } } auto O = U"����"; // { dg-error "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } } auto P = U"����"; // { dg-error "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } } auto Q = U"����"; // { dg-error "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } } auto R = U"������"; // { dg-error "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } } // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 } auto A1 = UR"(߿ࠀ𐀀)"; // { dg-bogus "invalid UTF-8 character" } auto B1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<80>'" "" { target c++23 } } auto C1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } } auto D1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<c0>'" "" { target c++23 } } auto E1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<c1>'" "" { target c++23 } } auto F1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<f5>'" "" { target c++23 } } auto G1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<ff>'" "" { target c++23 } } auto H1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<c2>'" "" { target c++23 } } auto I1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<e0>'" "" { target c++23 } } auto J1 = UR"(���)"; // { dg-error "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } } auto K1 = UR"(���)"; // { dg-error "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } } auto L1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } } auto M1 = UR"(�)"; // { dg-error "invalid UTF-8 character '<ec><80>'" "" { target c++23 } } auto N1 = UR"(���)"; // { dg-error "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } } auto O1 = UR"(����)"; // { dg-error "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } } auto P1 = UR"(����)"; // { dg-error "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } } auto Q1 = UR"(����)"; // { dg-error "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } } auto R1 = UR"(������)"; // { dg-error "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } } // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 } auto A2 = u8"߿ࠀ𐀀"; // { dg-bogus "invalid UTF-8 character" } auto B2 = u8"�"; // { dg-error "invalid UTF-8 character '<80>'" "" { target c++23 } } auto C2 = u8"�"; // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } } auto D2 = u8"�"; // { dg-error "invalid UTF-8 character '<c0>'" "" { target c++23 } } auto E2 = u8"�"; // { dg-error "invalid UTF-8 character '<c1>'" "" { target c++23 } } auto F2 = u8"�"; // { dg-error "invalid UTF-8 character '<f5>'" "" { target c++23 } } auto G2 = u8"�"; // { dg-error "invalid UTF-8 character '<ff>'" "" { target c++23 } } auto H2 = u8"�"; // { dg-error "invalid UTF-8 character '<c2>'" "" { target c++23 } } auto I2 = u8"�"; // { dg-error "invalid UTF-8 character '<e0>'" "" { target c++23 } } auto J2 = u8"���"; // { dg-error "invalid UTF-8 character '<e0><80><bf>'" "" { target c++23 } } auto K2 = u8"���"; // { dg-error "invalid UTF-8 character '<e0><9f><80>'" "" { target c++23 } } auto L2 = u8"�"; // { dg-error "invalid UTF-8 character '<e0><bf>'" "" { target c++23 } } auto M2 = u8"�"; // { dg-error "invalid UTF-8 character '<ec><80>'" "" { target c++23 } } auto N2 = u8"���"; // { dg-error "invalid UTF-8 character '<ed><a0><80>'" "" { target c++23 } } auto O2 = u8"����"; // { dg-error "invalid UTF-8 character '<f0><80><80><80>'" "" { target c++23 } } auto P2 = u8"����"; // { dg-error "invalid UTF-8 character '<f0><8f><bf><bf>'" "" { target c++23 } } auto Q2 = u8"����"; // { dg-error "invalid UTF-8 character '<f4><90><80><80>'" "" { target c++23 } } auto R2 = u8"������"; // { dg-error "invalid UTF-8 character '<fd><bf><bf><bf>'" "" { target c++23 } } // { dg-error "invalid UTF-8 character '<bf>'" "" { target c++23 } .-1 }