|
| 1 | +// RUN: %clang_cc1 -verify -Wno-c23-extensions %s |
| 2 | + |
| 3 | +/* WG14 N3192: Yes |
| 4 | + * Sequential hexdigits |
| 5 | + */ |
| 6 | + |
| 7 | +// expected-no-diagnostics |
| 8 | + |
| 9 | +// Demonstrate that hex digits are already sequential in all targets Clang |
| 10 | +// supports. |
| 11 | + |
| 12 | +#define TEST_VAL(ch) ((ch >= 'A' && ch <= 'F') || (ch >= 'a' && ch <= 'f')) |
| 13 | +#define GET_VAL(ch) (((ch >= 'A' && ch <= 'F') ? (ch - 'A') : (ch - 'a')) + 10) |
| 14 | + |
| 15 | +_Static_assert(TEST_VAL('A')); |
| 16 | +_Static_assert(TEST_VAL('B')); |
| 17 | +_Static_assert(TEST_VAL('C')); |
| 18 | +_Static_assert(TEST_VAL('D')); |
| 19 | +_Static_assert(TEST_VAL('E')); |
| 20 | +_Static_assert(TEST_VAL('F')); |
| 21 | +_Static_assert(TEST_VAL('a')); |
| 22 | +_Static_assert(TEST_VAL('b')); |
| 23 | +_Static_assert(TEST_VAL('c')); |
| 24 | +_Static_assert(TEST_VAL('d')); |
| 25 | +_Static_assert(TEST_VAL('e')); |
| 26 | +_Static_assert(TEST_VAL('f')); |
| 27 | + |
| 28 | +_Static_assert(!TEST_VAL('G')); |
| 29 | +_Static_assert(!TEST_VAL('h')); |
| 30 | + |
| 31 | +_Static_assert(GET_VAL('A') == 0xA); |
| 32 | +_Static_assert(GET_VAL('B') == 0xB); |
| 33 | +_Static_assert(GET_VAL('C') == 0xC); |
| 34 | +_Static_assert(GET_VAL('D') == 0xD); |
| 35 | +_Static_assert(GET_VAL('E') == 0xE); |
| 36 | +_Static_assert(GET_VAL('F') == 0xF); |
| 37 | +_Static_assert(GET_VAL('a') == 0xA); |
| 38 | +_Static_assert(GET_VAL('b') == 0xB); |
| 39 | +_Static_assert(GET_VAL('c') == 0xC); |
| 40 | +_Static_assert(GET_VAL('d') == 0xD); |
| 41 | +_Static_assert(GET_VAL('e') == 0xE); |
| 42 | +_Static_assert(GET_VAL('f') == 0xF); |
| 43 | + |
0 commit comments