/* P2071R2 - Named universal character escapes */ /* { dg-do run } */ /* { dg-require-effective-target wchar } */ /* { dg-options "-std=gnu99 -Wno-c++-compat" { target c } } */ /* { dg-options "-std=c++23" { target c++ } } */ #ifndef __cplusplus #include <wchar.h> typedef __CHAR16_TYPE__ char16_t; typedef __CHAR32_TYPE__ char32_t; #endif #ifdef __cplusplus #if U'\u0000' != U'\N{NULL}' \ || U'\u0001' != U'\N{START OF HEADING}' \ || U'\u0002' != U'\N{START OF TEXT}' \ || U'\u0003' != U'\N{END OF TEXT}' \ || U'\u0004' != U'\N{END OF TRANSMISSION}' \ || U'\u0005' != U'\N{ENQUIRY}' \ || U'\u0006' != U'\N{ACKNOWLEDGE}' \ || U'\u0007' != U'\N{ALERT}' \ || U'\u0008' != U'\N{BACKSPACE}' \ || U'\u0009' != U'\N{CHARACTER TABULATION}' \ || U'\u0009' != U'\N{HORIZONTAL TABULATION}' \ || U'\u000A' != U'\N{LINE FEED}' \ || U'\u000A' != U'\N{NEW LINE}' \ || U'\u000A' != U'\N{END OF LINE}' \ || U'\u000B' != U'\N{LINE TABULATION}' \ || U'\u000B' != U'\N{VERTICAL TABULATION}' \ || U'\u000C' != U'\N{FORM FEED}' \ || U'\u000D' != U'\N{CARRIAGE RETURN}' \ || U'\u000E' != U'\N{SHIFT OUT}' \ || U'\u000E' != U'\N{LOCKING-SHIFT ONE}' \ || U'\u000F' != U'\N{SHIFT IN}' \ || U'\u000F' != U'\N{LOCKING-SHIFT ZERO}' \ || U'\u0010' != U'\N{DATA LINK ESCAPE}' \ || U'\u0011' != U'\N{DEVICE CONTROL ONE}' \ || U'\u0012' != U'\N{DEVICE CONTROL TWO}' \ || U'\u0013' != U'\N{DEVICE CONTROL THREE}' \ || U'\u0014' != U'\N{DEVICE CONTROL FOUR}' \ || U'\u0015' != U'\N{NEGATIVE ACKNOWLEDGE}' \ || U'\u0016' != U'\N{SYNCHRONOUS IDLE}' \ || U'\u0017' != U'\N{END OF TRANSMISSION BLOCK}' \ || U'\u0018' != U'\N{CANCEL}' \ || U'\u0019' != U'\N{END OF MEDIUM}' \ || U'\u001A' != U'\N{SUBSTITUTE}' \ || U'\u001B' != U'\N{ESCAPE}' \ || U'\u001C' != U'\N{INFORMATION SEPARATOR FOUR}' \ || U'\u001C' != U'\N{FILE SEPARATOR}' \ || U'\u001D' != U'\N{INFORMATION SEPARATOR THREE}' \ || U'\u001D' != U'\N{GROUP SEPARATOR}' \ || U'\u001E' != U'\N{INFORMATION SEPARATOR TWO}' \ || U'\u001E' != U'\N{RECORD SEPARATOR}' \ || U'\u001F' != U'\N{INFORMATION SEPARATOR ONE}' \ || U'\u001F' != U'\N{UNIT SEPARATOR}' \ || U'\u007F' != U'\N{DELETE}' \ || U'\u0082' != U'\N{BREAK PERMITTED HERE}' \ || U'\u0083' != U'\N{NO BREAK HERE}' \ || U'\u0084' != U'\N{INDEX}' \ || U'\u0085' != U'\N{NEXT LINE}' \ || U'\u0086' != U'\N{START OF SELECTED AREA}' \ || U'\u0087' != U'\N{END OF SELECTED AREA}' \ || U'\u0088' != U'\N{CHARACTER TABULATION SET}' \ || U'\u0088' != U'\N{HORIZONTAL TABULATION SET}' \ || U'\u0089' != U'\N{CHARACTER TABULATION WITH JUSTIFICATION}' \ || U'\u0089' != U'\N{HORIZONTAL TABULATION WITH JUSTIFICATION}' \ || U'\u008A' != U'\N{LINE TABULATION SET}' \ || U'\u008A' != U'\N{VERTICAL TABULATION SET}' \ || U'\u008B' != U'\N{PARTIAL LINE FORWARD}' \ || U'\u008B' != U'\N{PARTIAL LINE DOWN}' \ || U'\u008C' != U'\N{PARTIAL LINE BACKWARD}' \ || U'\u008C' != U'\N{PARTIAL LINE UP}' \ || U'\u008D' != U'\N{REVERSE LINE FEED}' \ || U'\u008D' != U'\N{REVERSE INDEX}' \ || U'\u008E' != U'\N{SINGLE SHIFT TWO}' \ || U'\u008E' != U'\N{SINGLE-SHIFT-2}' \ || U'\u008F' != U'\N{SINGLE SHIFT THREE}' \ || U'\u008F' != U'\N{SINGLE-SHIFT-3}' \ || U'\u0090' != U'\N{DEVICE CONTROL STRING}' \ || U'\u0091' != U'\N{PRIVATE USE ONE}' \ || U'\u0091' != U'\N{PRIVATE USE-1}' \ || U'\u0092' != U'\N{PRIVATE USE TWO}' \ || U'\u0092' != U'\N{PRIVATE USE-2}' \ || U'\u0093' != U'\N{SET TRANSMIT STATE}' \ || U'\u0094' != U'\N{CANCEL CHARACTER}' \ || U'\u0095' != U'\N{MESSAGE WAITING}' \ || U'\u0096' != U'\N{START OF GUARDED AREA}' \ || U'\u0096' != U'\N{START OF PROTECTED AREA}' \ || U'\u0097' != U'\N{END OF GUARDED AREA}' \ || U'\u0097' != U'\N{END OF PROTECTED AREA}' \ || U'\u0098' != U'\N{START OF STRING}' \ || U'\u009A' != U'\N{SINGLE CHARACTER INTRODUCER}' \ || U'\u009B' != U'\N{CONTROL SEQUENCE INTRODUCER}' \ || U'\u009C' != U'\N{STRING TERMINATOR}' \ || U'\u009D' != U'\N{OPERATING SYSTEM COMMAND}' \ || U'\u009E' != U'\N{PRIVACY MESSAGE}' \ || U'\u009F' != U'\N{APPLICATION PROGRAM COMMAND}' \ || U'\u0020' != U'\N{SPACE}' \ || U'\u0030' != U'\N{DIGIT ZERO}' \ || U'\u0053' != U'\N{LATIN CAPITAL LETTER S}' #error Bad #endif #endif #if U'\U0001F402' != U'\N{OX}' \ || U'\U0001FBA9' != U'\N{BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT AND MIDDLE LEFT TO LOWER CENTRE}' \ || U'\u01FD' != U'\N{LATIN SMALL LETTER AE WITH ACUTE}' \ || U'\u2118' != U'\N{WEIERSTRASS ELLIPTIC FUNCTION}' \ || U'\u2118' != U'\N{SCRIPT CAPITAL P}' \ || U'\uFEFF' != U'\N{BYTE ORDER MARK}' \ || U'\uFEFF' != U'\N{ZERO WIDTH NO-BREAK SPACE}' \ || U'\u116C' != U'\N{HANGUL JUNGSEONG OE}' \ || U'\u1180' != U'\N{HANGUL JUNGSEONG O-E}' \ || U'\u0F60' != U'\N{TIBETAN LETTER -A}' \ || U'\u0F68' != U'\N{TIBETAN LETTER A}' \ || U'\u0F0A' != U'\N{TIBETAN MARK BKA- SHOG YIG MGO}' \ || U'\u0FD0' != U'\N{TIBETAN MARK BKA- SHOG GI MGO RGYAN}' \ || U'\u0FD0' != U'\N{TIBETAN MARK BSKA- SHOG GI MGO RGYAN}' \ || U'\uFE18' != U'\N{PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET}' \ || U'\uFE18' != U'\N{PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET}' \ || U'\u0CF3' != U'\N{KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT}' \ || U'\u0ECE' != U'\N{LAO YAMAKKAN}' \ || U'\U00010EFE' != U'\N{ARABIC SMALL LOW WORD QASR}' \ || U'\U00011241' != U'\N{KHOJKI VOWEL SIGN VOCALIC R}' \ || U'\U00011B06' != U'\N{DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE}' \ || U'\U00011F0B' != U'\N{KAWI LETTER VOCALIC RR}' \ || U'\U0001342F' != U'\N{EGYPTIAN HIEROGLYPH V011D}' \ || U'\U00013451' != U'\N{EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM}' \ || U'\U00016D5B' != U'\N{KIRAT RAI LETTER MA}' \ || U'\U0001B132' != U'\N{HIRAGANA LETTER SMALL KO}' \ || U'\U0001B155' != U'\N{KATAKANA LETTER SMALL KO}' \ || U'\U0001D2C4' != U'\N{KAKTOVIK NUMERAL FOUR}' \ || U'\U0001DF27' != U'\N{LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK}' \ || U'\U0001E036' != U'\N{MODIFIER LETTER CYRILLIC SMALL ZHE}' \ || U'\U0001E05B' != U'\N{CYRILLIC SUBSCRIPT SMALL LETTER EL}' \ || U'\U0001E4E5' != U'\N{NAG MUNDARI LETTER ENN}' \ || U'\U0001F6DC' != U'\N{WIRELESS}' \ || U'\U0001F77E' != U'\N{QUAOAR}' \ || U'\U0001F7D9' != U'\N{NINE POINTED WHITE STAR}' \ || U'\U0001FA76' != U'\N{GREY HEART}' \ || U'\U0001FA88' != U'\N{FLUTE}' \ || U'\U0001FA89' != U'\N{HARP}' \ || U'\U0001FABC' != U'\N{JELLYFISH}' \ || U'\uAC00' != U'\N{HANGUL SYLLABLE GA}' \ || U'\uAC02' != U'\N{HANGUL SYLLABLE GAGG}' \ || U'\uAD8D' != U'\N{HANGUL SYLLABLE GWEONJ}' \ || U'\uAE4D' != U'\N{HANGUL SYLLABLE GGAG}' \ || U'\uAE4E' != U'\N{HANGUL SYLLABLE GGAGG}' \ || U'\uC544' != U'\N{HANGUL SYLLABLE A}' \ || U'\uC55F' != U'\N{HANGUL SYLLABLE AH}' \ || U'\uC560' != U'\N{HANGUL SYLLABLE AE}' \ || U'\uD7A3' != U'\N{HANGUL SYLLABLE HIH}' \ || U'\u3400' != U'\N{CJK UNIFIED IDEOGRAPH-3400}' \ || U'\u4DBF' != U'\N{CJK UNIFIED IDEOGRAPH-4DBF}' \ || U'\u4E00' != U'\N{CJK UNIFIED IDEOGRAPH-4E00}' \ || U'\u9FFC' != U'\N{CJK UNIFIED IDEOGRAPH-9FFC}' \ || U'\U00020000' != U'\N{CJK UNIFIED IDEOGRAPH-20000}' \ || U'\U0002A6DD' != U'\N{CJK UNIFIED IDEOGRAPH-2A6DD}' \ || U'\U00020700' != U'\N{CJK UNIFIED IDEOGRAPH-20700}' \ || U'\U0002B734' != U'\N{CJK UNIFIED IDEOGRAPH-2B734}' \ || U'\U0002B739' != U'\N{CJK UNIFIED IDEOGRAPH-2B739}' \ || U'\U0002B740' != U'\N{CJK UNIFIED IDEOGRAPH-2B740}' \ || U'\U0002B81D' != U'\N{CJK UNIFIED IDEOGRAPH-2B81D}' \ || U'\U0002B820' != U'\N{CJK UNIFIED IDEOGRAPH-2B820}' \ || U'\U0002CEA1' != U'\N{CJK UNIFIED IDEOGRAPH-2CEA1}' \ || U'\U0002CEB0' != U'\N{CJK UNIFIED IDEOGRAPH-2CEB0}' \ || U'\U0002EBE0' != U'\N{CJK UNIFIED IDEOGRAPH-2EBE0}' \ || U'\U00030000' != U'\N{CJK UNIFIED IDEOGRAPH-30000}' \ || U'\U0003134A' != U'\N{CJK UNIFIED IDEOGRAPH-3134A}' \ || U'\U00031350' != U'\N{CJK UNIFIED IDEOGRAPH-31350}' \ || U'\U000323AF' != U'\N{CJK UNIFIED IDEOGRAPH-323AF}' \ || U'\U00013460' != U'\N{EGYPTIAN HIEROGLYPH-13460}' \ || U'\U000143FA' != U'\N{EGYPTIAN HIEROGLYPH-143FA}' \ || U'\U00017000' != U'\N{TANGUT IDEOGRAPH-17000}' \ || U'\U000187F7' != U'\N{TANGUT IDEOGRAPH-187F7}' \ || U'\U00018D00' != U'\N{TANGUT IDEOGRAPH-18D00}' \ || U'\U00018D08' != U'\N{TANGUT IDEOGRAPH-18D08}' \ || U'\U00018B00' != U'\N{KHITAN SMALL SCRIPT CHARACTER-18B00}' \ || U'\U00018CD5' != U'\N{KHITAN SMALL SCRIPT CHARACTER-18CD5}' \ || U'\U0001B170' != U'\N{NUSHU CHARACTER-1B170}' \ || U'\U0001B2FB' != U'\N{NUSHU CHARACTER-1B2FB}' \ || U'\uF900' != U'\N{CJK COMPATIBILITY IDEOGRAPH-F900}' \ || U'\uFA6D' != U'\N{CJK COMPATIBILITY IDEOGRAPH-FA6D}' \ || U'\uFA70' != U'\N{CJK COMPATIBILITY IDEOGRAPH-FA70}' \ || U'\uFAD9' != U'\N{CJK COMPATIBILITY IDEOGRAPH-FAD9}' \ || U'\U0002F800' != U'\N{CJK COMPATIBILITY IDEOGRAPH-2F800}' \ || U'\U0002FA1D' != U'\N{CJK COMPATIBILITY IDEOGRAPH-2FA1D}' #error Bad #endif const char32_t *a = U"\N{HEBREW LETTER KAF}\N{HEBREW LETTER FINAL NUN}"; const char32_t *b = U"\N{OX}\N{BOX DRAWINGS LIGHT DIAGONAL UPPER CENTRE TO MIDDLE RIGHT AND MIDDLE LEFT TO LOWER CENTRE}"; #define b\N{LATIN SMALL LETTER O WITH ACUTE}x U'\U0001FBA9' int main () { if (a[0] != U'\u05DB' || a[1] != U'\U000005DF' || a[2] || b[0] != U'\U0001F402' || b[1] != b\u{f3}x || b[2]) __builtin_abort (); return 0; }