1*20df6038SRichard Smith // RUN: %clang_cc1 -std=c++20 -verify %s -DCHAR8_T 2*20df6038SRichard Smith // RUN: %clang_cc1 -std=c++20 -verify %s -fchar8_t -DCHAR8_T 3*20df6038SRichard Smith // RUN: %clang_cc1 -std=c++17 -verify %s -fchar8_t -DCHAR8_T 4*20df6038SRichard Smith 5*20df6038SRichard Smith // RUN: %clang_cc1 -std=c++17 -verify %s 6*20df6038SRichard Smith // RUN: %clang_cc1 -std=c++17 -verify %s -fno-char8_t 7*20df6038SRichard Smith // RUN: %clang_cc1 -std=c++20 -verify %s -fno-char8_t 8*20df6038SRichard Smith 9*20df6038SRichard Smith #if defined(__cpp_char8_t) != defined(CHAR8_T) 10*20df6038SRichard Smith #error wrong setting for __cpp_char_t 11*20df6038SRichard Smith #endif 123a8244dfSRichard Smith 133a8244dfSRichard Smith #if defined(__cpp_char8_t) && __is_identifier(char8_t) 143a8244dfSRichard Smith #error char8_t is an identifier under -fchar8_t 153a8244dfSRichard Smith #endif 163a8244dfSRichard Smith 173a8244dfSRichard Smith #if !defined(__cpp_char8_t) && !__is_identifier(char8_t) 183a8244dfSRichard Smith #error char8_t is a keyword under -fno-char8_t 193a8244dfSRichard Smith #endif 203a8244dfSRichard Smith 213a8244dfSRichard Smith char8_t c8t; 223a8244dfSRichard Smith #ifndef __cpp_char8_t 233a8244dfSRichard Smith // expected-error@-2 {{unknown type}} 243a8244dfSRichard Smith #else 253a8244dfSRichard Smith // expected-no-diagnostics 263a8244dfSRichard Smith #endif 27