Module Name:    src
Committed By:   rillig
Date:           Tue Mar 23 21:19:09 UTC 2021

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/usr.bin/xlint/lint1: Makefile t_integration.sh
Added Files:
        src/tests/usr.bin/xlint/lint1: d_init_array_using_string.c
            d_init_array_using_string.exp

Log Message:
tests/lint: test initialization using string literals

The errors in line 74 and 75 of the test are wrong.  Everything is fine
there.  The bug lies in init_array_using_string, try to see if you can
spot it, neither GCC 9.3.0 nor Clang 8.0.1 could.


To generate a diff of this commit:
cvs rdiff -u -r1.1032 -r1.1033 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.35 -r1.36 src/tests/usr.bin/xlint/lint1/Makefile
cvs rdiff -u -r0 -r1.1 \
    src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c \
    src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp
cvs rdiff -u -r1.33 -r1.34 src/tests/usr.bin/xlint/lint1/t_integration.sh

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

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1032 src/distrib/sets/lists/tests/mi:1.1033
--- src/distrib/sets/lists/tests/mi:1.1032	Sun Mar 14 11:49:37 2021
+++ src/distrib/sets/lists/tests/mi	Tue Mar 23 21:19:08 2021
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1032 2021/03/14 11:49:37 rillig Exp $
+# $NetBSD: mi,v 1.1033 2021/03/23 21:19:08 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -6151,6 +6151,8 @@
 ./usr/tests/usr.bin/xlint/lint1/d_gcc_variable_array_init.c	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/d_incorrect_array_size.c	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/d_incorrect_array_size.exp	tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/d_init_array_using_string.c	tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/d_init_pop_member.c		tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/d_init_pop_member.exp		tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/d_lint_assert.c			tests-usr.bin-tests	compattestfile,atf

Index: src/tests/usr.bin/xlint/lint1/Makefile
diff -u src/tests/usr.bin/xlint/lint1/Makefile:1.35 src/tests/usr.bin/xlint/lint1/Makefile:1.36
--- src/tests/usr.bin/xlint/lint1/Makefile:1.35	Sun Mar  7 19:42:54 2021
+++ src/tests/usr.bin/xlint/lint1/Makefile	Tue Mar 23 21:19:08 2021
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.35 2021/03/07 19:42:54 rillig Exp $
+# $NetBSD: Makefile,v 1.36 2021/03/23 21:19:08 rillig Exp $
 
 NOMAN=		# defined
 
@@ -70,6 +70,8 @@ FILES+=		d_gcc_func.c
 FILES+=		d_gcc_variable_array_init.c
 FILES+=		d_incorrect_array_size.c
 FILES+=		d_incorrect_array_size.exp
+FILES+=		d_init_array_using_string.c
+FILES+=		d_init_array_using_string.exp
 FILES+=		d_init_pop_member.c
 FILES+=		d_init_pop_member.exp
 FILES+=		d_lint_assert.c

Index: src/tests/usr.bin/xlint/lint1/t_integration.sh
diff -u src/tests/usr.bin/xlint/lint1/t_integration.sh:1.33 src/tests/usr.bin/xlint/lint1/t_integration.sh:1.34
--- src/tests/usr.bin/xlint/lint1/t_integration.sh:1.33	Sun Mar  7 19:42:54 2021
+++ src/tests/usr.bin/xlint/lint1/t_integration.sh	Tue Mar 23 21:19:08 2021
@@ -1,4 +1,4 @@
-# $NetBSD: t_integration.sh,v 1.33 2021/03/07 19:42:54 rillig Exp $
+# $NetBSD: t_integration.sh,v 1.34 2021/03/23 21:19:08 rillig Exp $
 #
 # Copyright (c) 2008, 2010 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -108,6 +108,7 @@ test_case cast_typeof
 test_case decl_old_style_arguments
 test_case fold_test
 test_case gcc_extension
+test_case init_array_using_string
 test_case init_pop_member
 test_case lint_assert
 test_case return_type

Added files:

Index: src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c:1.1
--- /dev/null	Tue Mar 23 21:19:09 2021
+++ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c	Tue Mar 23 21:19:08 2021
@@ -0,0 +1,77 @@
+/*	$NetBSD: d_init_array_using_string.c,v 1.1 2021/03/23 21:19:08 rillig Exp $	*/
+# 3 "d_init_array_using_string.c"
+
+/*
+ * Test initialization of arrays and pointers by string literals.
+ */
+
+void sink(const void *);
+
+void
+test_assignment_initialization(void)
+{
+	const char *cs_match = "";
+	const int *ws_match = L"";
+
+	const char *cs_mismatch = L"";	/* expect: illegal pointer combination */
+	const int *ws_mismatch = "";	/* expect: illegal pointer combination */
+}
+
+void
+test_pointer_initialization_in_struct(void)
+{
+	struct cs_ws {
+		const char *cs;
+		const int *ws;
+	};
+
+	struct cs_ws type_match = {
+	    	"",
+	    	L"",
+	};
+
+	struct cs_ws type_mismatch = {
+	    	L"",		/* expect: illegal pointer combination */
+	    	"",		/* expect: illegal pointer combination */
+	};
+
+	struct cs_ws extra_braces = {
+		{ "" },
+		{ L"" },
+	};
+}
+
+
+void
+test_array_initialization_in_struct(void)
+{
+	struct cs_ws {
+		const char cs[10];
+		const int ws[10];
+	};
+
+	struct cs_ws type_match = {
+	    	"",
+	    	L"",
+	};
+
+	struct cs_ws type_mismatch = {
+	    	L"",		/* expect: illegal combination */
+	    	"",		/* expect: illegal combination */
+	};
+
+	struct cs_ws no_terminating_null = {
+	    	"0123456789",
+	    	L"0123456789",
+	};
+
+	struct cs_ws too_many_characters = {
+	    	"0123456789X",	/* expect: non-null byte ignored */
+	    	L"0123456789X",	/* expect: non-null byte ignored */
+	};
+
+	struct cs_ws extra_braces = {
+		{ "" },		/* expect: illegal combination *//*FIXME*/
+		{ L"" },	/* expect: illegal combination *//*FIXME*/
+	};
+}
Index: src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp
diff -u /dev/null src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp:1.1
--- /dev/null	Tue Mar 23 21:19:09 2021
+++ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp	Tue Mar 23 21:19:08 2021
@@ -0,0 +1,10 @@
+d_init_array_using_string.c(16): warning: illegal pointer combination (pointer to const char) and (pointer to int), op = [124]
+d_init_array_using_string.c(17): warning: illegal pointer combination (pointer to const int) and (pointer to char), op = [124]
+d_init_array_using_string.c(34): warning: illegal pointer combination [184]
+d_init_array_using_string.c(35): warning: illegal pointer combination [184]
+d_init_array_using_string.c(59): warning: illegal combination of integer (char) and pointer (pointer to int) [183]
+d_init_array_using_string.c(60): warning: illegal combination of integer (char) and pointer (pointer to char) [183]
+d_init_array_using_string.c(69): warning: non-null byte ignored in string initializer [187]
+d_init_array_using_string.c(70): warning: non-null byte ignored in string initializer [187]
+d_init_array_using_string.c(74): warning: illegal combination of integer (char) and pointer (pointer to char) [183]
+d_init_array_using_string.c(75): warning: illegal combination of integer (int) and pointer (pointer to int) [183]

Reply via email to