1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
// RUN: %clang_cc1 -std=c++2b -fsyntax-only -verify %s
#if 1z != 1
#error "z suffix must be recognized by preprocessor"
#endif
#if 1uz != 1
#error "uz suffix must be recognized by preprocessor"
#endif
#if !(-1z < 0)
#error "z suffix must be interpreted as signed"
#endif
#if !(-1uz > 0)
#error "uz suffix must be interpreted as unsigned"
#endif
void ValidSuffix() {
// Decimal literals.
{
auto a1 = 1z;
auto a2 = 1Z;
auto a3 = 1uz;
auto a4 = 1uZ;
auto a5 = 1Uz;
auto a6 = 1UZ;
auto a7 = 1zu;
auto a8 = 1Zu;
auto a9 = 1zU;
auto a10 = 1ZU;
auto a11 = 1'2z;
auto a12 = 1'2Z;
}
// Hexadecimal literals.
{
auto a1 = 0x1z;
auto a2 = 0x1Z;
auto a3 = 0x1uz;
auto a4 = 0x1uZ;
auto a5 = 0x1Uz;
auto a6 = 0x1UZ;
auto a7 = 0x1zu;
auto a8 = 0x1Zu;
auto a9 = 0x1zU;
auto a10 = 0x1ZU;
auto a11 = 0x1'2z;
auto a12 = 0x1'2Z;
}
// Binary literals.
{
auto a1 = 0b1z;
auto a2 = 0b1Z;
auto a3 = 0b1uz;
auto a4 = 0b1uZ;
auto a5 = 0b1Uz;
auto a6 = 0b1UZ;
auto a7 = 0b1zu;
auto a8 = 0b1Zu;
auto a9 = 0b1zU;
auto a10 = 0b1ZU;
auto a11 = 0b1'1z;
auto a12 = 0b1'1Z;
}
// Octal literals.
{
auto a1 = 01z;
auto a2 = 01Z;
auto a3 = 01uz;
auto a4 = 01uZ;
auto a5 = 01Uz;
auto a6 = 01UZ;
auto a7 = 01zu;
auto a8 = 01Zu;
auto a9 = 01zU;
auto a10 = 01ZU;
auto a11 = 0'1z;
auto a12 = 0'1Z;
}
}
void InvalidSuffix() {
// Long.
{
auto a1 = 1lz; // expected-error {{invalid suffix}}
auto a2 = 1lZ; // expected-error {{invalid suffix}}
auto a3 = 1Lz; // expected-error {{invalid suffix}}
auto a4 = 1LZ; // expected-error {{invalid suffix}}
auto a5 = 1zl; // expected-error {{invalid suffix}}
auto a6 = 1Zl; // expected-error {{invalid suffix}}
auto a7 = 1zL; // expected-error {{invalid suffix}}
auto a8 = 1ZL; // expected-error {{invalid suffix}}
auto a9 = 1ulz; // expected-error {{invalid suffix}}
auto a10 = 1ulZ; // expected-error {{invalid suffix}}
auto a11 = 1uLz; // expected-error {{invalid suffix}}
auto a12 = 1uLZ; // expected-error {{invalid suffix}}
auto a13 = 1uzl; // expected-error {{invalid suffix}}
auto a14 = 1uZl; // expected-error {{invalid suffix}}
auto a15 = 1uzL; // expected-error {{invalid suffix}}
auto a16 = 1uZL; // expected-error {{invalid suffix}}
}
// Long long.
{
auto a1 = 1llz; // expected-error {{invalid suffix}}
auto a2 = 1llZ; // expected-error {{invalid suffix}}
auto a3 = 1LLz; // expected-error {{invalid suffix}}
auto a4 = 1LLZ; // expected-error {{invalid suffix}}
auto a5 = 1zll; // expected-error {{invalid suffix}}
auto a6 = 1Zll; // expected-error {{invalid suffix}}
auto a7 = 1zLL; // expected-error {{invalid suffix}}
auto a8 = 1ZLL; // expected-error {{invalid suffix}}
auto a9 = 1ullz; // expected-error {{invalid suffix}}
auto a10 = 1ullZ; // expected-error {{invalid suffix}}
auto a11 = 1uLLz; // expected-error {{invalid suffix}}
auto a12 = 1uLLZ; // expected-error {{invalid suffix}}
auto a13 = 1uzll; // expected-error {{invalid suffix}}
auto a14 = 1uZll; // expected-error {{invalid suffix}}
auto a15 = 1uzLL; // expected-error {{invalid suffix}}
auto a16 = 1uZLL; // expected-error {{invalid suffix}}
}
// Floating point.
{
auto a1 = 0.1z; // expected-error {{invalid suffix}}
auto a2 = 0.1Z; // expected-error {{invalid suffix}}
auto a3 = 0.1uz; // expected-error {{invalid suffix}}
auto a4 = 0.1uZ; // expected-error {{invalid suffix}}
auto a5 = 0.1Uz; // expected-error {{invalid suffix}}
auto a6 = 0.1UZ; // expected-error {{invalid suffix}}
auto a7 = 0.1zu; // expected-error {{invalid suffix}}
auto a8 = 0.1Zu; // expected-error {{invalid suffix}}
auto a9 = 0.1zU; // expected-error {{invalid suffix}}
auto a10 = 0.1ZU; // expected-error {{invalid suffix}}
auto a11 = 0.1fz; // expected-error {{invalid suffix}}
auto a12 = 0.1fZ; // expected-error {{invalid suffix}}
auto a13 = 0.1fuz; // expected-error {{invalid suffix}}
auto a14 = 0.1fuZ; // expected-error {{invalid suffix}}
auto a15 = 0.1fUz; // expected-error {{invalid suffix}}
auto a16 = 0.1fUZ; // expected-error {{invalid suffix}}
auto a17 = 0.1fzu; // expected-error {{invalid suffix}}
auto a18 = 0.1fZu; // expected-error {{invalid suffix}}
auto a19 = 0.1fzU; // expected-error {{invalid suffix}}
auto a110 = 0.1fZU; // expected-error {{invalid suffix}}
}
// Repetitive suffix.
{
auto a1 = 1zz; // expected-error {{invalid suffix}}
auto a2 = 1zZ; // expected-error {{invalid suffix}}
auto a3 = 1Zz; // expected-error {{invalid suffix}}
auto a4 = 1ZZ; // expected-error {{invalid suffix}}
}
}
|