xref: /netbsd-src/tests/usr.bin/xlint/lint1/init_braces.c (revision 4f645668ed707e1f969c546666f8c8e45e6f8888)
1 /*	$NetBSD: init_braces.c,v 1.2 2022/06/22 19:23:18 rillig Exp $	*/
2 # 3 "init_braces.c"
3 
4 /*
5  * Test initialization with excess braces around expressions.
6  *
7  * See also:
8  *	C99 6.7.8
9  *	C11 6.7.9
10  */
11 
12 void
13 init_int(void)
14 {
15 	/* gcc-expect+2: error: invalid initializer */
16 	/* clang-expect+1: error: array initializer must be an initializer list */
17 	/* expect+2: error: {}-enclosed initializer required [181] */
18 	/* expect+1: error: empty array declaration for 'num0' [190] */
19 	int num0[] = 0;
20 	int num1[] = { 1 };
21 	/* gcc-expect+2: warning: braces around scalar initializer */
22 	/* clang-expect+1: warning: braces around scalar initializer */
23 	int num2[] = {{ 1 }};
24 	/* gcc-expect+3: warning: braces around scalar initializer */
25 	/* gcc-expect+2: warning: braces around scalar initializer */
26 	/* clang-expect+1: warning: too many braces around scalar initializer */
27 	int num3[] = {{{ 1 }}};
28 	/* gcc-expect+5: warning: braces around scalar initializer */
29 	/* gcc-expect+4: warning: braces around scalar initializer */
30 	/* gcc-expect+3: warning: braces around scalar initializer */
31 	/* clang-expect+2: warning: too many braces around scalar initializer */
32 	/* clang-expect+1: warning: too many braces around scalar initializer */
33 	int num4[] = {{{{ 1 }}}};
34 }
35 
36 void
37 init_string(void)
38 {
39 	char name0[] = "";
40 	char name1[] = { "" };
41 	/* gcc-expect+5: warning: braces around scalar initializer */
42 	/* gcc-expect+4: warning: initialization of 'char' from 'char *' makes integer from pointer without a cast */
43 	/* clang-expect+3: warning: incompatible pointer to integer conversion initializing 'char' with an expression of type 'char [1]' */
44 	/* clang-expect+2: warning: braces around scalar initializer */
45 	/* expect+1: warning: illegal combination of integer 'char' and pointer 'pointer to char' [183] */
46 	char name2[] = {{ "" }};
47 	/* gcc-expect+6: warning: braces around scalar initializer */
48 	/* gcc-expect+5: warning: braces around scalar initializer */
49 	/* gcc-expect+4: warning: initialization of 'char' from 'char *' makes integer from pointer without a cast */
50 	/* clang-expect+3: warning: too many braces around scalar initializer */
51 	/* clang-expect+2: warning: incompatible pointer to integer conversion initializing 'char' with an expression of type 'char [1]' */
52 	/* expect+1: warning: illegal combination of integer 'char' and pointer 'pointer to char' [183] */
53 	char name3[] = {{{ "" }}};
54 	/* gcc-expect+8: warning: braces around scalar initializer */
55 	/* gcc-expect+7: warning: braces around scalar initializer */
56 	/* gcc-expect+6: warning: braces around scalar initializer */
57 	/* gcc-expect+5: warning: initialization of 'char' from 'char *' makes integer from pointer without a cast */
58 	/* clang-expect+4: warning: too many braces around scalar initializer */
59 	/* clang-expect+3: warning: too many braces around scalar initializer */
60 	/* clang-expect+2: warning: incompatible pointer to integer conversion initializing 'char' with an expression of type 'char [1]' */
61 	/* expect+1: warning: illegal combination of integer 'char' and pointer 'pointer to char' [183] */
62 	char name4[] = {{{{ "" }}}};
63 }
64