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]