xref: /llvm-project/clang/test/C/C2y/n3192.c (revision 7d0656d734bdc19f2478b394b15378a637cc43ee)
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