17748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c++11 -Wfour-char-constants -fsyntax-only -verify %s 20093e12513c5c896434915d5e9126f51b780aa61Richard Smith// RUN: %clang_cc1 -triple x86_64-apple-darwin -std=c11 -x c -Wfour-char-constants -fsyntax-only -verify %s 30093e12513c5c896434915d5e9126f51b780aa61Richard Smith 40093e12513c5c896434915d5e9126f51b780aa61Richard Smith#ifndef __cplusplus 50093e12513c5c896434915d5e9126f51b780aa61Richard Smithtypedef __WCHAR_TYPE__ wchar_t; 60093e12513c5c896434915d5e9126f51b780aa61Richard Smithtypedef __CHAR16_TYPE__ char16_t; 70093e12513c5c896434915d5e9126f51b780aa61Richard Smithtypedef __CHAR32_TYPE__ char32_t; 80093e12513c5c896434915d5e9126f51b780aa61Richard Smith#endif 97748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 107748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellint a = 'ab'; // expected-warning {{multi-character character constant}} 117748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellint b = '\xFF\xFF'; // expected-warning {{multi-character character constant}} 127748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellint c = 'APPS'; // expected-warning {{multi-character character constant}} 137748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 147748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar d = '⌘'; // expected-error {{character too large for enclosing character literal type}} 157748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar e = '\u2318'; // expected-error {{character too large for enclosing character literal type}} 167748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 170093e12513c5c896434915d5e9126f51b780aa61Richard Smith#ifdef __cplusplus 187748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellauto f = '\xE2\x8C\x98'; // expected-warning {{multi-character character constant}} 190093e12513c5c896434915d5e9126f51b780aa61Richard Smith#endif 207748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 217748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar16_t g = u'ab'; // expected-error {{Unicode character literals may not contain multiple characters}} 227748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar16_t h = u'\U0010FFFD'; // expected-error {{character too large for enclosing character literal type}} 237748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 247748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellwchar_t i = L'ab'; // expected-warning {{extraneous characters in character constant ignored}} 257748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellwchar_t j = L'\U0010FFFD'; 267748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 277748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar32_t k = U'\U0010FFFD'; 287748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 297748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar l = 'Ø'; // expected-error {{character too large for enclosing character literal type}} 307748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar m = ''; // expected-error {{character too large for enclosing character literal type}} 317748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrell 327748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar32_t n = U'ab'; // expected-error {{Unicode character literals may not contain multiple characters}} 337748cbc97ff9c6c3940549d30965a10b47a45ee8Seth Cantrellchar16_t o = ''; // expected-error {{character too large for enclosing character literal type}} 3459b26d84b64510158e23d80eba077b844b7e0b04Richard Smith 3559b26d84b64510158e23d80eba077b844b7e0b04Richard Smithchar16_t p[2] = u"\U0000FFFF"; 360093e12513c5c896434915d5e9126f51b780aa61Richard Smithchar16_t q[2] = u"\U00010000"; 370093e12513c5c896434915d5e9126f51b780aa61Richard Smith#ifdef __cplusplus 380093e12513c5c896434915d5e9126f51b780aa61Richard Smith// expected-error@-2 {{too long}} 390093e12513c5c896434915d5e9126f51b780aa61Richard Smith#endif 40