Module Name:    src
Committed By:   rillig
Date:           Sun Mar 28 18:48:32 UTC 2021

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

Log Message:
tests/lint: add tests for initialization


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/tests/usr.bin/xlint/lint1/d_c99_init.c
cvs rdiff -u -r1.13 -r1.14 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.17 src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.18
--- src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.17	Sun Mar 28 14:01:50 2021
+++ src/tests/usr.bin/xlint/lint1/d_c99_init.c	Sun Mar 28 18:48:32 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: d_c99_init.c,v 1.17 2021/03/28 14:01:50 rillig Exp $	*/
+/*	$NetBSD: d_c99_init.c,v 1.18 2021/03/28 18:48:32 rillig Exp $	*/
 # 3 "d_c99_init.c"
 
 /*
@@ -34,6 +34,9 @@ struct_initialization_via_assignment(any
 
 // See init_using_expr, initstack_string.
 char static_duration[] = "static duration";
+signed char static_duration_signed[] = "static duration";
+unsigned char static_duration_unsigned[] = "static duration";
+int static_duration_wchar[] = L"static duration";
 
 // See init_using_expr.
 void
@@ -44,13 +47,25 @@ initialization_by_braced_string(void)
 }
 
 void
-initialization_with_redundant_braces(any arg)
+initialization_by_redundantly_braced_string(void)
+{
+	any local = {{{{ "hello" }}}};
+	use(&local);
+}
+
+/*
+ * Only scalar expressions and string literals may be enclosed by additional
+ * braces.  Since 'arg' is a struct, this is a compile-time error.
+ */
+void
+initialization_with_too_many_braces(any arg)
 {
 	any local = { arg };	/* expect: 185 */
 	use(&arg);
 }
 
-// Some of the following examples are mentioned in init.c.
+// Some of the following examples are mentioned in the introduction comment
+// in init.c.
 
 int number = 12345;
 
@@ -217,4 +232,14 @@ struct ends_with_unnamed_bit_field {
 	23456,
 };
 
-// See d_struct_init_nested.c for a more complicated example.
+char prefixed_message[] = {
+	'E', ':', ' ',
+	/* expect+1: illegal combination of integer (char) and pointer */
+	"message\n",
+};
+
+char message_with_suffix[] = {
+	"message",
+	/* expect+1: too many array initializers */
+	'\n',
+};

Index: src/tests/usr.bin/xlint/lint1/d_c99_init.exp
diff -u src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.13 src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.14
--- src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.13	Sun Mar 28 14:01:50 2021
+++ src/tests/usr.bin/xlint/lint1/d_c99_init.exp	Sun Mar 28 18:48:32 2021
@@ -1,5 +1,7 @@
 d_c99_init.c(23): error: too many initializers [174]
-d_c99_init.c(49): error: cannot initialize 'pointer to const void' from 'struct any' [185]
-d_c99_init.c(65): error: too many array initializers, expected 3 [173]
-d_c99_init.c(130): error: syntax error 'named member must only be used with struct/union' [249]
-d_c99_init.c(217): error: too many struct/union initializers [172]
+d_c99_init.c(63): error: cannot initialize 'pointer to const void' from 'struct any' [185]
+d_c99_init.c(80): error: too many array initializers, expected 3 [173]
+d_c99_init.c(145): error: syntax error 'named member must only be used with struct/union' [249]
+d_c99_init.c(232): error: too many struct/union initializers [172]
+d_c99_init.c(238): warning: illegal combination of integer (char) and pointer (pointer to char) [183]
+d_c99_init.c(244): error: too many array initializers, expected 8 [173]

Reply via email to