10ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg// RUN: %clang_cc1 -std=c11 -fsyntax-only -triple x86_64-pc-linux -verify %s 20ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 30ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg// Note: these match the types specified by the target above. 40ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborgtypedef int wchar_t; 50ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborgtypedef unsigned short char16_t; 60ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborgtypedef unsigned int char32_t; 70ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 80ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborgvoid f() { 90ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char a1[] = "a"; // No error. 100ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char a2[] = u8"a"; // No error. 110ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char a3[] = u"a"; // expected-error{{initializing char array with wide string literal}} 120ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char a4[] = U"a"; // expected-error{{initializing char array with wide string literal}} 130ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char a5[] = L"a"; // expected-error{{initializing char array with wide string literal}} 140ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 150ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg wchar_t b1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 160ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg wchar_t b2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 170ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg wchar_t b3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 180ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg wchar_t b4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 190ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg wchar_t b5[] = L"a"; // No error. 200ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 210ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char16_t c1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 220ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char16_t c2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 230ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char16_t c3[] = u"a"; // No error. 240ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char16_t c4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 250ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char16_t c5[] = L"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 260ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 270ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char32_t d1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 280ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char32_t d2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 290ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char32_t d3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 300ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char32_t d4[] = U"a"; // No error. 310ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char32_t d5[] = L"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 320ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 330ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg int e1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}} 340ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg int e2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}} 350ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg int e3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 360ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg int e4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}} 370ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg int e5[] = L"a"; // No error. 380ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 390ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg long f1[] = "a"; // expected-error{{array initializer must be an initializer list}} 400ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg long f2[] = u8"a"; // expected-error{{array initializer must be an initializer list}}} 410ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg long f3[] = u"a"; // expected-error{{array initializer must be an initializer list}} 420ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg long f4[] = U"a"; // expected-error{{array initializer must be an initializer list}} 430ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg long f5[] = L"a"; // expected-error{{array initializer must be an initializer list}} 440ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg} 450ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg 460ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborgvoid g() { 470ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char a[] = 1; // expected-error{{array initializer must be an initializer list or string literal}} 480ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg wchar_t b[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}} 490ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char16_t c[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}} 500ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg char32_t d[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}} 510ff5074f37a66bca244a9d5d0da050ff68693ce2Hans Wennborg} 52