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 44