126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith// RUN: %clang_cc1 -verify -std=c++11 %s
226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c00 = '\u0000'; // ok
426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c01 = '\u0001'; // ok
526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c1f = '\u001f'; // ok
626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c20 = '\u0020'; // ' ', ok
726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c22 = '\u0022'; // ", ok
826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c23 = '\u0023'; // #, ok
926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c24 = '\u0024'; // $, ok
1026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c25 = '\u0025'; // %, ok
1126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c27 = '\u0027'; // ', ok
1226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c3f = '\u003f'; // ?, ok
1326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c40 = '\u0040'; // @, ok
1426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c41 = '\u0041'; // A, ok
1526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c5f = '\u005f'; // _, ok
1626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c60 = '\u0060'; // `, ok
1726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c7e = '\u007e'; // ~, ok
1826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c7f = '\u007f'; // ok
1926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
2026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t w007f = L'\u007f';
2126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t w0080 = L'\u0080';
2226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t w009f = L'\u009f';
2326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t w00a0 = L'\u00a0';
2426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
2526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t wd799 = L'\ud799';
2626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t wd800 = L'\ud800'; // expected-error {{invalid universal character}}
2726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t wdfff = L'\udfff'; // expected-error {{invalid universal character}}
2826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t we000 = L'\ue000';
2926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
3026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar32_t w10fffe = U'\U0010fffe';
3126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar32_t w10ffff = U'\U0010ffff';
3226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar32_t w110000 = U'\U00110000'; // expected-error {{invalid universal character}}
3326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
3426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *p1 = "\u0000\u0001\u001f\u0020\u0022\u0023\u0024\u0025\u0027\u003f\u0040\u0041\u005f\u0060\u007e\u007f";
3526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *p2 = L"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
3626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *p3 = u8"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
3726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char16_t *p4 = u"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
3826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char32_t *p5 = U"\u0000\u0012\u004e\u007f\u0080\u009f\u00a0\ud799\ue000";
3926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *p6 = L"foo \U00110000 bar"; // expected-error {{invalid universal character}}
4026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *p7 = u8"foo \U0000d800 bar"; // expected-error {{invalid universal character}}
4126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char16_t *p8 = u"foo \U0000dfff bar"; // expected-error {{invalid universal character}}
4226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char32_t *p9 = U"foo \U0010ffff bar"; // ok
43