1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -std=gnu++11 -fsyntax-only -verify %s
253afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor
353afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregorvoid f() {
453afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor  char *u8str;
553afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor  u8str = u8"a UTF-8 string"; // expected-error {{assigning to 'char *' from incompatible type 'const char [15]'}}
653afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor  char16_t *ustr;
753afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor  ustr = u"a UTF-16 string"; // expected-error {{assigning to 'char16_t *' from incompatible type 'const char16_t [16]'}}
853afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor  char32_t *Ustr;
953afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor  Ustr = U"a UTF-32 string"; // expected-error {{assigning to 'char32_t *' from incompatible type 'const char32_t [16]'}}
102fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper
112fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  char *Rstr;
12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  Rstr = R"foo(a raw string)foo"; // expected-warning{{ISO C++11 does not allow conversion from string literal to 'char *'}}
132fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  wchar_t *LRstr;
14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines  LRstr = LR"foo(a wide raw string)foo"; // expected-warning{{ISO C++11 does not allow conversion from string literal to 'wchar_t *'}}
152fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  char *u8Rstr;
162fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  u8Rstr = u8R"foo(a UTF-8 raw string)foo"; // expected-error {{assigning to 'char *' from incompatible type 'const char [19]'}}
172fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  char16_t *uRstr;
182fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  uRstr = uR"foo(a UTF-16 raw string)foo"; // expected-error {{assigning to 'char16_t *' from incompatible type 'const char16_t [20]'}}
192fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  char32_t *URstr;
202fa4e86b4fdada3b9ecbbbd99965b83ed879f69bCraig Topper  URstr = UR"foo(a UTF-32 raw string)foo"; // expected-error {{assigning to 'char32_t *' from incompatible type 'const char32_t [20]'}}
2153afad5ebbfd47e932405af5b93177ea0d68e3f4Douglas Gregor}
22