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