msg_348.c revision 1.1 1 1.1 rillig /* $NetBSD: msg_348.c,v 1.1 2021/10/30 22:04:42 rillig Exp $ */
2 1.1 rillig # 3 "msg_348.c"
3 1.1 rillig
4 1.1 rillig // Test for message 348: maximum value %d of '%s' does not match maximum array index %d [348]
5 1.1 rillig
6 1.1 rillig enum color {
7 1.1 rillig red,
8 1.1 rillig green,
9 1.1 rillig blue
10 1.1 rillig };
11 1.1 rillig
12 1.1 rillig const char *
13 1.1 rillig color_name(enum color color)
14 1.1 rillig {
15 1.1 rillig static const char *name[] = {
16 1.1 rillig "red",
17 1.1 rillig "green",
18 1.1 rillig "blue"
19 1.1 rillig };
20 1.1 rillig /* No warning since the maximum enum value matches the array size. */
21 1.1 rillig return name[color];
22 1.1 rillig }
23 1.1 rillig
24 1.1 rillig const char *
25 1.1 rillig color_name_too_few(enum color color)
26 1.1 rillig {
27 1.1 rillig static const char *name[] = {
28 1.1 rillig "red",
29 1.1 rillig "green"
30 1.1 rillig };
31 1.1 rillig /* expect+1: warning: maximum value 2 of 'enum color' does not match maximum array index 1 [348] */
32 1.1 rillig return name[color];
33 1.1 rillig }
34 1.1 rillig
35 1.1 rillig const char *
36 1.1 rillig color_name_too_many(enum color color)
37 1.1 rillig {
38 1.1 rillig static const char *name[] = {
39 1.1 rillig "red",
40 1.1 rillig "green",
41 1.1 rillig "blue",
42 1.1 rillig "black"
43 1.1 rillig };
44 1.1 rillig /* expect+1: warning: maximum value 2 of 'enum color' does not match maximum array index 3 [348] */
45 1.1 rillig return name[color];
46 1.1 rillig }
47 1.1 rillig
48 1.1 rillig const char *
49 1.1 rillig color_name_computed_index(enum color color)
50 1.1 rillig {
51 1.1 rillig static const char *name[] = {
52 1.1 rillig "unused",
53 1.1 rillig "red",
54 1.1 rillig "green",
55 1.1 rillig "blue"
56 1.1 rillig };
57 1.1 rillig /* No warning since the array index is not a name. */
58 1.1 rillig return name[color + 1];
59 1.1 rillig }
60 1.1 rillig
61 1.1 rillig const char *
62 1.1 rillig color_name_cast_from_int(int c)
63 1.1 rillig {
64 1.1 rillig static const char *name[] = {
65 1.1 rillig "unused",
66 1.1 rillig "red",
67 1.1 rillig "green",
68 1.1 rillig "blue"
69 1.1 rillig };
70 1.1 rillig /* No warning since the array index before conversion is not a name. */
71 1.1 rillig return name[(enum color)(c + 1)];
72 1.1 rillig }
73 1.1 rillig
74 1.1 rillig const char *
75 1.1 rillig color_name_computed_pointer(enum color color, const char *name)
76 1.1 rillig {
77 1.1 rillig /* No warning since 'name' is not an array. */
78 1.1 rillig return (&name)[color];
79 1.1 rillig }
80 1.1 rillig
81 1.1 rillig extern const char *incomplete_color_name[];
82 1.1 rillig
83 1.1 rillig const char *
84 1.1 rillig color_name_incomplete_array(enum color color)
85 1.1 rillig {
86 1.1 rillig /* No warning since 'incomplete_color_name' is incomplete. */
87 1.1 rillig return incomplete_color_name[color];
88 1.1 rillig }
89 1.1 rillig
90 1.1 rillig enum large {
91 1.1 rillig /* expect+1: warning: integral constant too large [56] */
92 1.1 rillig min = -1LL << 40,
93 1.1 rillig /* expect+1: warning: integral constant too large [56] */
94 1.1 rillig max = 1LL << 40,
95 1.1 rillig zero = 0
96 1.1 rillig };
97 1.1 rillig
98 1.1 rillig const char *
99 1.1 rillig large_name(enum large large)
100 1.1 rillig {
101 1.1 rillig static const char *name[] = {
102 1.1 rillig "dummy",
103 1.1 rillig };
104 1.1 rillig /* No warning since at least 1 enum constant is outside of INT. */
105 1.1 rillig return name[large];
106 1.1 rillig }
107