xref: /aosp_15_r20/external/clang/test/Sema/wchar.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 %s -fsyntax-only -verify
2*67e74705SXin Li // RUN: %clang_cc1 %s -fsyntax-only -fshort-wchar -verify -DSHORT_WCHAR
3*67e74705SXin Li 
4*67e74705SXin Li typedef __WCHAR_TYPE__ wchar_t;
5*67e74705SXin Li 
6*67e74705SXin Li #if defined(_WIN32) || defined(_M_IX86) || defined(__CYGWIN__) \
7*67e74705SXin Li  || defined(_M_X64) || defined(__ORBIS__) || defined(SHORT_WCHAR)
8*67e74705SXin Li   #define WCHAR_T_TYPE unsigned short
9*67e74705SXin Li #elif defined(__arm) || defined(__aarch64__)
10*67e74705SXin Li   #define WCHAR_T_TYPE unsigned int
11*67e74705SXin Li #elif defined(__sun)
12*67e74705SXin Li   #define WCHAR_T_TYPE long
13*67e74705SXin Li #else /* Solaris. */
14*67e74705SXin Li   #define WCHAR_T_TYPE int
15*67e74705SXin Li #endif
16*67e74705SXin Li 
17*67e74705SXin Li int check_wchar_size[sizeof(*L"") == sizeof(wchar_t) ? 1 : -1];
18*67e74705SXin Li 
foo()19*67e74705SXin Li void foo() {
20*67e74705SXin Li   WCHAR_T_TYPE t1[] = L"x";
21*67e74705SXin Li   wchar_t tab[] = L"x";
22*67e74705SXin Li   WCHAR_T_TYPE t2[] = "x";     // expected-error {{initializing wide char array with non-wide string literal}}
23*67e74705SXin Li   char t3[] = L"x";   // expected-error {{initializing char array with wide string literal}}
24*67e74705SXin Li }
25