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