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