xref: /netbsd-src/tests/usr.bin/xlint/lint1/gcc_attribute_enum.c (revision c83f7def18808bbacffe67311157403551f58f94)
1*c83f7defSrillig /*	$NetBSD: gcc_attribute_enum.c,v 1.5 2022/06/17 18:54:53 rillig Exp $	*/
2b4c7d7a7Srillig # 3 "gcc_attribute_enum.c"
3b4c7d7a7Srillig 
4b4c7d7a7Srillig /*
5b4c7d7a7Srillig  * Tests for the GCC __attribute__ for enumerators.
6b4c7d7a7Srillig  *
7b4c7d7a7Srillig  * https://gcc.gnu.org/onlinedocs/gcc/Enumerator-Attributes.html
8b4c7d7a7Srillig  */
9b4c7d7a7Srillig 
10b538fc2dSrillig /*
11b538fc2dSrillig  * Attributes in enum-specifier.
12b538fc2dSrillig  *
13b538fc2dSrillig  * See GCC, c-parser.c, function c_parser_enum_specifier.
14b538fc2dSrillig  */
15b538fc2dSrillig 
16b538fc2dSrillig enum __attribute__(()) tag;
17b538fc2dSrillig 
18b538fc2dSrillig enum __attribute__(()) tag_with_declaration {
19b538fc2dSrillig 	TAG_WITH_DECL
20b538fc2dSrillig } __attribute__(());
21b538fc2dSrillig 
22b538fc2dSrillig enum __attribute__(()) {
23b538fc2dSrillig 	ONLY_DECL
24b538fc2dSrillig } __attribute__(());
25b538fc2dSrillig 
26b538fc2dSrillig /*
27b538fc2dSrillig  * Attributes in enumerator.
28b538fc2dSrillig  *
29b538fc2dSrillig  * See GCC, c-parser.c, function c_parser_enum_specifier.
30b538fc2dSrillig  */
31b538fc2dSrillig 
32b48b6323Srillig enum without_initializer {
33b538fc2dSrillig 	NO_INIT_FIRST __attribute__(()),
345aebc23cSrillig 	NO_INIT_LAST __attribute__(())
35b538fc2dSrillig };
36b538fc2dSrillig 
37b48b6323Srillig enum with_initializer {
38b538fc2dSrillig 	INIT_FIRST __attribute__(()) = 1,
395aebc23cSrillig 	INIT_LAST __attribute__(()) = 2,
40*c83f7defSrillig 	/* expect+1: error: syntax error '__attribute__' [249] */
415aebc23cSrillig 	INIT_WRONG = 3 __attribute__(()),
42b4c7d7a7Srillig };
43b48b6323Srillig 
44b48b6323Srillig enum tag {
45b48b6323Srillig 	TAG
46b48b6323Srillig };
47