1 // RUN: %clang_cc1 -std=c11 -fsyntax-only -triple x86_64-pc-linux -verify %s 2 3 // Note: these match the types specified by the target above. 4 typedef int wchar_t; 5 typedef unsigned short char16_t; 6 typedef unsigned int char32_t; 7 8 void f() { 9 char a1[] = "a"; // No error. 10 char a2[] = u8"a"; // No error. 11 char a3[] = u"a"; // expected-error{{initializing char array with wide string literal}} 12 char a4[] = U"a"; // expected-error{{initializing char array with wide string literal}} 13 char a5[] = L"a"; // expected-error{{initializing char array with wide string literal}} 14 15 wchar_t b1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 16 wchar_t b2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 17 wchar_t b3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 18 wchar_t b4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 19 wchar_t b5[] = L"a"; // No error. 20 21 char16_t c1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 22 char16_t c2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 23 char16_t c3[] = u"a"; // No error. 24 char16_t c4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 25 char16_t c5[] = L"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 26 27 char32_t d1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 28 char32_t d2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 29 char32_t d3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 30 char32_t d4[] = U"a"; // No error. 31 char32_t d5[] = L"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 32 33 int e1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 34 int e2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 35 int e3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 36 int e4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 37 int e5[] = L"a"; // No error. 38 39 long f1[] = "a"; // expected-error{{array initializer must be an initializer list}} 40 long f2[] = u8"a"; // expected-error{{array initializer must be an initializer list}}} 41 long f3[] = u"a"; // expected-error{{array initializer must be an initializer list}} 42 long f4[] = U"a"; // expected-error{{array initializer must be an initializer list}} 43 long f5[] = L"a"; // expected-error{{array initializer must be an initializer list}} 44 } 45 46 void g() { 47 char a[] = 1; // expected-error{{array initializer must be an initializer list or string literal}} 48 wchar_t b[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}} 49 char16_t c[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}} 50 char32_t d[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}} 51 } 52