Module Name:    src
Committed By:   rillig
Date:           Thu Mar 18 20:20:55 UTC 2021

Modified Files:
        src/tests/usr.bin/xlint/lint1: d_c99_init.c d_c99_init.exp

Log Message:
tests/lint: add more examples for initialization


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/tests/usr.bin/xlint/lint1/d_c99_init.c
cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/d_c99_init.exp

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/usr.bin/xlint/lint1/d_c99_init.c
diff -u src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.6 src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.7
--- src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.6	Sun Feb 21 14:19:27 2021
+++ src/tests/usr.bin/xlint/lint1/d_c99_init.c	Thu Mar 18 20:20:55 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: d_c99_init.c,v 1.6 2021/02/21 14:19:27 rillig Exp $	*/
+/*	$NetBSD: d_c99_init.c,v 1.7 2021/03/18 20:20:55 rillig Exp $	*/
 # 3 "d_c99_init.c"
 
 /*
@@ -47,9 +47,83 @@ void
 initialization_with_redundant_braces(any arg)
 {
 	any local = { arg };	/* expect: 185 */
-	// FIXME: message 185 needs to be reworded to "cannot initialize '%s' from '%s'".
+	// TODO: message 185 needs to be reworded to "cannot initialize '%s' from '%s'".
 	use(&arg);
 }
 
+// Some of the following examples are mentioned in init.c.
+
+int number = 12345;
+
+int number_with_braces_and_comma = {
+	12345,
+};
+
+int array_with_fixed_size[3] = {
+	111,
+	222,
+	333,
+	444,			/* expect: too many array initializers */
+};
+
 // See initstack_push, 'extending array of unknown size'.
-const int primes[] = { 2, 3, 5, 7, 9 };
+int array_of_unknown_size[] = {
+	111,
+	222,
+	333,
+};
+
+int array_flat[2][2] = {
+	11,
+	12,
+	21,
+	22
+};
+
+int array_nested[2][2] = {
+	{
+		11,
+		12
+	},
+	{
+		21,
+		22
+	}
+};
+
+int array_with_designators[] = {
+	['1'] = 111,
+	['5'] = 555,
+	['9'] = 999
+};
+
+int array_with_some_designators[] = {
+	['1'] = 111,
+	222,
+	['9'] = 999
+};
+
+struct point {
+	int x;
+	int y;
+};
+
+struct point point = {
+	3,
+	4
+};
+
+struct point point_with_designators = {
+	.y = 4,
+	.x = 3,
+};
+
+struct point point_with_mixed_designators = {
+	.x = 3,
+	4,
+	// FIXME: assertion failure '== ARRAY'
+	// 5,
+	.x = 3,
+};
+
+// See d_struct_init_nested.c for a more complicated example.

Index: src/tests/usr.bin/xlint/lint1/d_c99_init.exp
diff -u src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.5 src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.6
--- src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.5	Mon Feb 22 15:09:50 2021
+++ src/tests/usr.bin/xlint/lint1/d_c99_init.exp	Thu Mar 18 20:20:55 2021
@@ -1,3 +1,4 @@
 d_c99_init.c(22): invalid initializer type int [176]
 d_c99_init.c(23): too many initializers [174]
 d_c99_init.c(49): initialization type mismatch (pointer to const void) and (struct any) [185]
+d_c99_init.c(66): too many array initializers, expected 3 [173]

Reply via email to