1+ #include "stdint.h"
2+
3+ uint_least8_t g1 [] = {
4+ // Basic valid
5+ UINT8_C (0 ), // COMPLIANT
6+ UINT8_C (1 ), // COMPLIANT
7+ UINT8_C (8 ), // COMPLIANT
8+ UINT8_C (0x23 ), // COMPLIANT
9+ UINT8_C (034 ), // COMPLIANT
10+
11+ // Incorrect literal types
12+ UINT8_C (1.0 ), // NON-COMPLIANT
13+ UINT8_C (0b111 ), // NON-COMPLIANT
14+
15+ // Suffixes disallowed
16+ UINT8_C (1u ), // NON-COMPLIANT
17+ UINT8_C (2U ), // NON-COMPLIANT
18+ UINT8_C (3l ), // NON-COMPLIANT
19+ UINT8_C (4L ), // NON-COMPLIANT
20+ UINT8_C (5ul ), // NON-COMPLIANT
21+
22+ // Range tests
23+ UINT8_C (255 ), // COMPLIANT
24+ UINT8_C (0xFF ), // COMPLIANT
25+ UINT8_C (0377 ), // COMPLIANT
26+ UINT8_C (256 ), // NON-COMPLIANT
27+ UINT8_C (0400 ), // NON-COMPLIANT
28+ UINT8_C (0x100 ), // NON-COMPLIANT
29+
30+ // Signage tests
31+ UINT8_C (-1 ), // NON-COMPLIANT
32+ UINT8_C (-20 ), // NON-COMPLIANT
33+ UINT8_C (-33 ), // NON-COMPLIANT
34+ UINT8_C (-0x44 ), // NON-COMPLIANT
35+
36+ // Invalid nonliteral expressions
37+ UINT8_C (0 + 0 ), // NON-COMPLIANT
38+ UINT8_C ("a" [0 ]), // NON-COMPLIANT
39+ UINT8_C (0 ["a" ]), // NON-COMPLIANT
40+ UINT8_C (UINT8_MAX ), // NON-COMPLIANT
41+ };
42+
43+ int_least8_t g2 [] = {
44+ // Basic valid
45+ INT8_C (0 ), // COMPLIANT
46+ INT8_C (1 ), // COMPLIANT
47+ INT8_C (8 ), // COMPLIANT
48+ INT8_C (0x23 ), // COMPLIANT
49+ INT8_C (034 ), // COMPLIANT
50+
51+ // Range tests
52+ INT8_C (127 ), // COMPLIANT
53+ INT8_C (0x79 ), // COMPLIANT
54+ INT8_C (0177 ), // COMPLIANT
55+ INT8_C (128 ), // NON-COMPLIANT
56+ INT8_C (0200 ), // NON-COMPLIANT
57+ INT8_C (0x80 ), // NON-COMPLIANT
58+ INT8_C (-128 ), // COMPLIANT
59+ INT8_C (-0x80 ), // COMPLIANT
60+ INT8_C (-0200 ), // COMPLIANT
61+ INT8_C (-129 ), // NON-COMPLIANT
62+ INT8_C (-0201 ), // NON-COMPLIANT
63+ INT8_C (-0x81 ), // NON-COMPLIANT
64+ };
65+
66+ uint_least16_t g3 [] = {
67+ // Basic valid
68+ UINT16_C (0 ), // COMPLIANT
69+ UINT16_C (0x23 ), // COMPLIANT
70+ UINT16_C (034 ), // COMPLIANT
71+
72+ // Range tests
73+ UINT16_C (65535 ), // COMPLIANT
74+ UINT16_C (0xFFFF ), // COMPLIANT
75+ UINT16_C (0177777 ), // COMPLIANT
76+ UINT16_C (65536 ), // NON-COMPLIANT
77+ UINT16_C (0200000 ), // NON-COMPLIANT
78+ UINT16_C (0x10000 ), // NON-COMPLIANT
79+ };
80+
81+ int_least16_t g4 [] = {
82+ // Basic valid
83+ INT16_C (0 ), // COMPLIANT
84+ INT16_C (0x23 ), // COMPLIANT
85+ INT16_C (034 ), // COMPLIANT
86+
87+ // Range tests
88+ INT16_C (32767 ), // COMPLIANT
89+ INT16_C (0x7FFF ), // COMPLIANT
90+ INT16_C (077777 ), // COMPLIANT
91+ INT16_C (32768 ), // NON-COMPLIANT
92+ INT16_C (0100000 ), // NON-COMPLIANT
93+ INT16_C (0x8000 ), // NON-COMPLIANT
94+ INT16_C (-32768 ), // COMPLIANT
95+ INT16_C (-040000 ), // COMPLIANT
96+ INT16_C (-0x8000 ), // COMPLIANT
97+ INT16_C (-32769 ), // NON-COMPLIANT
98+ INT16_C (-040001 ), // NON-COMPLIANT
99+ INT16_C (-0x8001 ), // NON-COMPLIANT
100+ };
101+
102+ uint_least32_t g5 [] = {
103+ // Basic valid
104+ UINT32_C (0 ), // COMPLIANT
105+
106+ // Range tests
107+ UINT32_C (4294967295 ), // COMPLIANT
108+ UINT32_C (0xFFFFFFFF ), // COMPLIANT
109+ UINT32_C (4294967296 ), // NON-COMPLIANT
110+ UINT32_C (0x100000000 ), // NON-COMPLIANT
111+ };
112+
113+ int_least32_t g6 [] = {
114+ // Basic valid
115+ INT32_C (0 ), // COMPLIANT
116+
117+ // Range tests
118+ INT32_C (2147483647 ), // COMPLIANT
119+ INT32_C (0x7FFFFFFF ), // COMPLIANT
120+ INT32_C (2147483648 ), // NON-COMPLIANT
121+ INT32_C (0x800000000 ), // NON-COMPLIANT
122+ INT32_C (-2147483648 ), // COMPLIANT
123+ INT32_C (-0x80000000 ), // COMPLIANT
124+ INT32_C (-2147483647 ), // NON-COMPLIANT
125+ INT32_C (-0x800000001 ), // NON-COMPLIANT
126+ };
127+
128+ uint_least64_t g7 [] = {
129+ // Basic valid
130+ UINT64_C (0 ), // COMPLIANT
131+
132+ // Range tests
133+ UINT64_C (18446744073709551615 ), // COMPLIANT
134+ UINT64_C (0xFFFFFFFFFFFFFFFF ), // COMPLIANT
135+ // Compile time error if we try to create integer literals beyond this.
136+ };
137+
138+ int_least64_t g8 [] = {
139+ // Basic valid
140+ INT64_C (0 ), // COMPLIANT
141+
142+ // Range tests
143+ INT64_C (9223372036854775807 ), // COMPLIANT
144+ // INT64_C(9223372036854775808) is a compile-time error
145+
146+ // -9223372036854775808 allowed, but cannot be created via unary- without compile time errors.
147+ INT64_C (-9223372036854775807 ), // COMPLIANT
148+ INT64_C (-9223372036854775807 - 1 ), // COMPLIANT
149+ // -9223372036854775809 is not allowed, and cannot be created via unary- without compile time errors.
150+ INT64_C (-9223372036854775807 - 2 ), // NON-COMPLIANT
151+
152+ INT64_C (0x7FFFFFFFFFFFFFFF ), // COMPLIANT
153+ INT64_C (0x8000000000000000 ), // NON-COMPLIANT
154+ INT64_C (-0x8000000000000000 ), // COMPLIANT
155+ INT64_C (-0x8000000000000001 ), // NON-COMPLIANT
156+ };
0 commit comments