126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith// RUN: %clang_cc1 -verify -std=c++98 %s
226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c00 = '\u0000'; // expected-error {{universal character name refers to a control character}}
426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c01 = '\u0001'; // expected-error {{universal character name refers to a control character}}
526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c1f = '\u001f'; // expected-error {{universal character name refers to a control character}}
626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c20 = '\u0020'; // ' ', expected-error {{character ' ' cannot be specified by a universal character name}}
726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c22 = '\u0022'; // ", expected-error {{character '"' cannot be specified by a universal character name}}
826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c23 = '\u0023'; // #, expected-error {{character '#' cannot be specified by a universal character name}}
926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c24 = '\u0024'; // $, ok
1026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c25 = '\u0025'; // %, expected-error {{character '%' cannot be specified by a universal character name}}
1126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c27 = '\u0027'; // ', expected-error {{character ''' cannot be specified by a universal character name}}
1226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c3f = '\u003f'; // ?, expected-error {{character '?' cannot be specified by a universal character name}}
1326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c40 = '\u0040'; // @, ok
1426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c41 = '\u0041'; // A, expected-error {{character 'A' cannot be specified by a universal character name}}
1526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c5f = '\u005f'; // _, expected-error {{character '_' cannot be specified by a universal character name}}
1626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c60 = '\u0060'; // `, ok
1726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c7e = '\u007e'; // ~, expected-error {{character '~' cannot be specified by a universal character name}}
1826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithchar c7f = '\u007f'; // expected-error {{universal character name refers to a control character}}
1926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
2026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t w007f = L'\u007f'; // expected-error {{universal character name refers to a control character}}
2126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t w0080 = L'\u0080'; // expected-error {{universal character name refers to a control character}}
2226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithwchar_t w009f = L'\u009f'; // expected-error {{universal character name refers to a control character}}
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 Smithconst char *s00 = "\u0000"; // expected-error {{universal character name refers to a control character}}
3126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s01 = "\u0001"; // expected-error {{universal character name refers to a control character}}
3226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s1f = "\u001f"; // expected-error {{universal character name refers to a control character}}
3326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s20 = "\u0020"; // ' ', expected-error {{character ' ' cannot be specified by a universal character name}}
3426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s22 = "\u0022"; // ", expected-error {{character '"' cannot be specified by a universal character name}}
3526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s23 = "\u0023"; // #, expected-error {{character '#' cannot be specified by a universal character name}}
3626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s24 = "\u0024"; // $, ok
3726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s25 = "\u0025"; // %, expected-error {{character '%' cannot be specified by a universal character name}}
3826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s27 = "\u0027"; // ', expected-error {{character ''' cannot be specified by a universal character name}}
3926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s3f = "\u003f"; // ?, expected-error {{character '?' cannot be specified by a universal character name}}
4026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s40 = "\u0040"; // @, ok
4126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s41 = "\u0041"; // A, expected-error {{character 'A' cannot be specified by a universal character name}}
4226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s5f = "\u005f"; // _, expected-error {{character '_' cannot be specified by a universal character name}}
4326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s60 = "\u0060"; // `, ok
4426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s7e = "\u007e"; // ~, expected-error {{character '~' cannot be specified by a universal character name}}
4526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst char *s7f = "\u007f"; // expected-error {{universal character name refers to a control character}}
4626b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
4726b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *ws007f = L"\u007f"; // expected-error {{universal character name refers to a control character}}
4826b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *ws0080 = L"\u0080"; // expected-error {{universal character name refers to a control character}}
4926b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *ws009f = L"\u009f"; // expected-error {{universal character name refers to a control character}}
5026b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *ws00a0 = L"\u00a0";
5126b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smith
5226b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *wsd799 = L"\ud799";
5326b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *wsd800 = L"\ud800"; // expected-error {{invalid universal character}}
5426b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *wsdfff = L"\udfff"; // expected-error {{invalid universal character}}
5526b75c07317a3b50a8a00a1623e3ef38af1d8349Richard Smithconst wchar_t *wse000 = L"\ue000";
56