Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
      2 
      3 void f() {
      4   char a1[] = "a"; // No error.
      5   char a2[] = u8"a"; // No error.
      6   char a3[] = u"a"; // expected-error{{initializing char array with wide string literal}}
      7   char a4[] = U"a"; // expected-error{{initializing char array with wide string literal}}
      8   char a5[] = L"a"; // expected-error{{initializing char array with wide string literal}}
      9 
     10   wchar_t b1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}}
     11   wchar_t b2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}}
     12   wchar_t b3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}}
     13   wchar_t b4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}}
     14   wchar_t b5[] = L"a"; // No error.
     15 
     16   char16_t c1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}}
     17   char16_t c2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}}
     18   char16_t c3[] = u"a"; // No error.
     19   char16_t c4[] = U"a"; // expected-error{{initializing wide char array with incompatible wide string literal}}
     20   char16_t c5[] = L"a"; // expected-error{{initializing wide char array with incompatible wide string literal}}
     21 
     22   char32_t d1[] = "a"; // expected-error{{initializing wide char array with non-wide string literal}}
     23   char32_t d2[] = u8"a"; // expected-error{{initializing wide char array with non-wide string literal}}
     24   char32_t d3[] = u"a"; // expected-error{{initializing wide char array with incompatible wide string literal}}
     25   char32_t d4[] = U"a"; // No error.
     26   char32_t d5[] = L"a"; // expected-error{{initializing wide char array with incompatible wide string literal}}
     27 
     28   int e1[] = "a"; // expected-error{{array initializer must be an initializer list}}
     29   int e2[] = u8"a"; // expected-error{{array initializer must be an initializer list}}
     30   int e3[] = u"a"; // expected-error{{array initializer must be an initializer list}}
     31   int e4[] = U"a"; // expected-error{{array initializer must be an initializer list}}
     32   int e5[] = L"a"; // expected-error{{array initializer must be an initializer list}}
     33 }
     34 
     35 void g() {
     36   char a[] = 1; // expected-error{{array initializer must be an initializer list or string literal}}
     37   wchar_t b[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}}
     38   char16_t c[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}}
     39   char32_t d[] = 1; // expected-error{{array initializer must be an initializer list or wide string literal}}
     40 }
     41