xref: /minix3/external/bsd/llvm/dist/clang/test/Sema/string-init.c (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
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