Module Name: src Committed By: rillig Date: Sat Jan 15 14:22:03 UTC 2022
Modified Files: src/tests/usr.bin/xlint/lint1: c11_generic_expression.c c11_generic_expression.exp c99_init_designator.c c99_init_designator.exp d_c99_bool.c d_c99_bool.exp d_c99_bool_strict.c d_c99_bool_strict.exp d_c99_complex_split.c d_c99_complex_split.exp d_c99_init.c d_c99_init.exp d_constant_conv1.c d_constant_conv1.exp d_constant_conv2.c d_constant_conv2.exp d_cvt_constant.c d_cvt_constant.exp d_decl_old_style_arguments.c d_decl_old_style_arguments.exp d_fold_test.c d_fold_test.exp d_gcc_compound_statements1.c d_gcc_compound_statements1.exp d_incorrect_array_size.c d_incorrect_array_size.exp d_init_array_using_string.c d_init_array_using_string.exp d_init_pop_member.c d_init_pop_member.exp d_lint_assert.c d_lint_assert.exp d_long_double_int.c d_long_double_int.exp d_pr_22119.c d_pr_22119.exp d_return_type.c d_return_type.exp d_struct_init_nested.c d_struct_init_nested.exp d_type_conv1.c d_type_conv1.exp d_type_conv2.c d_type_conv2.exp d_type_conv3.c d_type_conv3.exp decl_struct_member.c decl_struct_member.exp emit.c emit.exp emit.exp-ln expr_range.c expr_range.exp feat_stacktrace.c feat_stacktrace.exp gcc_attribute_aligned.c gcc_attribute_aligned.exp gcc_bit_field_types.c gcc_bit_field_types.exp lex_floating.c lex_floating.exp op_colon.c op_colon.exp stmt_for.c stmt_for.exp Log Message: tests/lint: expect complete messages in feature tests Previously, the tests contained many comments like /* expect: 123 */, which were useless to a casual reader since nobody is expected to learn lint's message IDs by heart. Replace these with the complete diagnostics, to show what lint is complaining about. The tests named msg_*.c have been left unmodified since they mention the full message text in their header comment. No functional change. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 \ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c \ src/tests/usr.bin/xlint/lint1/decl_struct_member.exp cvs rdiff -u -r1.8 -r1.9 \ src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp \ src/tests/usr.bin/xlint/lint1/d_c99_complex_split.c \ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp \ src/tests/usr.bin/xlint/lint1/d_init_pop_member.c \ src/tests/usr.bin/xlint/lint1/d_struct_init_nested.exp cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/c99_init_designator.c \ src/tests/usr.bin/xlint/lint1/c99_init_designator.exp \ src/tests/usr.bin/xlint/lint1/emit.exp \ src/tests/usr.bin/xlint/lint1/expr_range.exp \ src/tests/usr.bin/xlint/lint1/feat_stacktrace.c \ src/tests/usr.bin/xlint/lint1/feat_stacktrace.exp \ src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c \ src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.exp \ src/tests/usr.bin/xlint/lint1/lex_floating.c \ src/tests/usr.bin/xlint/lint1/lex_floating.exp \ src/tests/usr.bin/xlint/lint1/op_colon.c \ src/tests/usr.bin/xlint/lint1/op_colon.exp \ src/tests/usr.bin/xlint/lint1/stmt_for.c \ src/tests/usr.bin/xlint/lint1/stmt_for.exp cvs rdiff -u -r1.7 -r1.8 src/tests/usr.bin/xlint/lint1/d_c99_bool.c \ src/tests/usr.bin/xlint/lint1/d_init_pop_member.exp cvs rdiff -u -r1.6 -r1.7 src/tests/usr.bin/xlint/lint1/d_c99_bool.exp \ src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c \ src/tests/usr.bin/xlint/lint1/d_struct_init_nested.c cvs rdiff -u -r1.35 -r1.36 src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c cvs rdiff -u -r1.32 -r1.33 \ src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp cvs rdiff -u -r1.2 -r1.3 \ src/tests/usr.bin/xlint/lint1/d_c99_complex_split.exp \ src/tests/usr.bin/xlint/lint1/d_constant_conv1.exp \ src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.exp \ src/tests/usr.bin/xlint/lint1/d_pr_22119.c \ src/tests/usr.bin/xlint/lint1/d_return_type.exp cvs rdiff -u -r1.39 -r1.40 src/tests/usr.bin/xlint/lint1/d_c99_init.c cvs rdiff -u -r1.29 -r1.30 src/tests/usr.bin/xlint/lint1/d_c99_init.exp cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/d_constant_conv1.c \ src/tests/usr.bin/xlint/lint1/d_constant_conv2.c \ src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.c \ src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.exp \ src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.c \ src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.exp \ src/tests/usr.bin/xlint/lint1/d_pr_22119.exp \ src/tests/usr.bin/xlint/lint1/d_return_type.c \ src/tests/usr.bin/xlint/lint1/d_type_conv1.c \ src/tests/usr.bin/xlint/lint1/d_type_conv2.c \ src/tests/usr.bin/xlint/lint1/expr_range.c \ src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.exp cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/d_constant_conv2.exp \ src/tests/usr.bin/xlint/lint1/d_cvt_constant.c \ src/tests/usr.bin/xlint/lint1/d_cvt_constant.exp \ src/tests/usr.bin/xlint/lint1/d_fold_test.exp \ src/tests/usr.bin/xlint/lint1/d_long_double_int.exp \ src/tests/usr.bin/xlint/lint1/d_type_conv1.exp \ src/tests/usr.bin/xlint/lint1/d_type_conv2.exp \ src/tests/usr.bin/xlint/lint1/d_type_conv3.exp \ src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.c cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/d_fold_test.c \ src/tests/usr.bin/xlint/lint1/d_lint_assert.c \ src/tests/usr.bin/xlint/lint1/d_lint_assert.exp \ src/tests/usr.bin/xlint/lint1/d_long_double_int.c \ src/tests/usr.bin/xlint/lint1/d_type_conv3.c cvs rdiff -u -r1.9 -r1.10 \ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c \ src/tests/usr.bin/xlint/lint1/emit.c \ src/tests/usr.bin/xlint/lint1/emit.exp-ln cvs rdiff -u -r1.13 -r1.14 src/tests/usr.bin/xlint/lint1/decl_struct_member.c 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/c11_generic_expression.c diff -u src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.10 src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.11 --- src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.10 Sun Aug 1 21:12:31 2021 +++ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: c11_generic_expression.c,v 1.10 2021/08/01 21:12:31 rillig Exp $ */ +/* $NetBSD: c11_generic_expression.c,v 1.11 2022/01/15 14:22:03 rillig Exp $ */ # 3 "c11_generic_expression.c" /* @@ -69,7 +69,8 @@ classify_char(char c) const int * comma_expression(char first, double second) { - return _Generic(first, second, /* expect: syntax error 'second' */ + /* expect+1: error: syntax error 'second' [249] */ + return _Generic(first, second, char: "first", double: 2.0 ); Index: src/tests/usr.bin/xlint/lint1/decl_struct_member.exp diff -u src/tests/usr.bin/xlint/lint1/decl_struct_member.exp:1.10 src/tests/usr.bin/xlint/lint1/decl_struct_member.exp:1.11 --- src/tests/usr.bin/xlint/lint1/decl_struct_member.exp:1.10 Sun Sep 5 11:42:32 2021 +++ src/tests/usr.bin/xlint/lint1/decl_struct_member.exp Sat Jan 15 14:22:03 2022 @@ -2,7 +2,7 @@ decl_struct_member.c(34): error: syntax decl_struct_member.c(36): error: illegal type combination [4] decl_struct_member.c(38): error: syntax error '}' [249] decl_struct_member.c(38): warning: empty declaration [0] -decl_struct_member.c(47): error: syntax error 'unnamed member' [249] -decl_struct_member.c(72): warning: illegal bit-field type 'array[8] of unsigned int' [35] -decl_struct_member.c(79): error: syntax error '0' [249] -decl_struct_member.c(89): error: cannot recover from previous errors [224] +decl_struct_member.c(48): error: syntax error 'unnamed member' [249] +decl_struct_member.c(73): warning: illegal bit-field type 'array[8] of unsigned int' [35] +decl_struct_member.c(81): error: syntax error '0' [249] +decl_struct_member.c(91): error: cannot recover from previous errors [224] Index: src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp diff -u src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp:1.8 src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp:1.9 --- src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp:1.8 Tue Aug 3 18:44:33 2021 +++ src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp Sat Jan 15 14:22:03 2022 @@ -2,5 +2,5 @@ c11_generic_expression.c(29): warning: f c11_generic_expression.c(21): warning: argument 'var' unused in function 'classify_type_without_default' [231] c11_generic_expression.c(37): warning: argument 'var' unused in function 'classify_type_with_default' [231] c11_generic_expression.c(53): warning: argument 'c' unused in function 'classify_char' [231] -c11_generic_expression.c(72): error: syntax error 'second' [249] -c11_generic_expression.c(77): warning: function comma_expression falls off bottom without returning value [217] +c11_generic_expression.c(73): error: syntax error 'second' [249] +c11_generic_expression.c(78): warning: function comma_expression falls off bottom without returning value [217] Index: src/tests/usr.bin/xlint/lint1/d_c99_complex_split.c diff -u src/tests/usr.bin/xlint/lint1/d_c99_complex_split.c:1.8 src/tests/usr.bin/xlint/lint1/d_c99_complex_split.c:1.9 --- src/tests/usr.bin/xlint/lint1/d_c99_complex_split.c:1.8 Sun Jul 11 19:39:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_complex_split.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_c99_complex_split.c,v 1.8 2021/07/11 19:39:00 rillig Exp $ */ +/* $NetBSD: d_c99_complex_split.c,v 1.9 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_c99_complex_split.c" /* @@ -79,7 +79,8 @@ void trigger_warning(double _Complex c) { c += 1.0; - return c | c; /* expect: incompatible types */ + /* expect+1: error: operands of '|' have incompatible types (double _Complex != double _Complex) [107] */ + return c | c; } void Index: src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp diff -u src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp:1.8 src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp:1.9 --- src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp:1.8 Wed Dec 22 00:45:53 2021 +++ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.exp Sat Jan 15 14:22:03 2022 @@ -2,7 +2,7 @@ d_init_array_using_string.c(17): warning d_init_array_using_string.c(19): warning: illegal combination of 'pointer to const int' and 'pointer to char', op 'init' [124] d_init_array_using_string.c(37): warning: illegal combination of 'pointer to const char' and 'pointer to int', op 'init' [124] d_init_array_using_string.c(39): warning: illegal combination of 'pointer to const int' and 'pointer to char', op 'init' [124] -d_init_array_using_string.c(63): warning: illegal combination of integer (char) and pointer (pointer to int) [183] -d_init_array_using_string.c(64): warning: illegal combination of integer (char) and pointer (pointer to char) [183] -d_init_array_using_string.c(74): warning: string literal too long (11) for target array (10) [187] +d_init_array_using_string.c(64): warning: illegal combination of integer (char) and pointer (pointer to int) [183] +d_init_array_using_string.c(66): warning: illegal combination of integer (char) and pointer (pointer to char) [183] d_init_array_using_string.c(76): warning: string literal too long (11) for target array (10) [187] +d_init_array_using_string.c(78): warning: string literal too long (11) for target array (10) [187] Index: src/tests/usr.bin/xlint/lint1/d_init_pop_member.c diff -u src/tests/usr.bin/xlint/lint1/d_init_pop_member.c:1.8 src/tests/usr.bin/xlint/lint1/d_init_pop_member.c:1.9 --- src/tests/usr.bin/xlint/lint1/d_init_pop_member.c:1.8 Sun Jun 20 18:11:21 2021 +++ src/tests/usr.bin/xlint/lint1/d_init_pop_member.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_init_pop_member.c,v 1.8 2021/06/20 18:11:21 rillig Exp $ */ +/* $NetBSD: d_init_pop_member.c,v 1.9 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_init_pop_member.c" /* @@ -35,7 +35,8 @@ struct state { void func(void) { - struct state st = { /* expect: set but not used */ + /* expect+1: warning: 'st' set but not used in function 'func' [191] */ + struct state st = { .capital.mayor.hobbies.dancing = 1, /* * Since 2015-07-28: Index: src/tests/usr.bin/xlint/lint1/d_struct_init_nested.exp diff -u src/tests/usr.bin/xlint/lint1/d_struct_init_nested.exp:1.8 src/tests/usr.bin/xlint/lint1/d_struct_init_nested.exp:1.9 --- src/tests/usr.bin/xlint/lint1/d_struct_init_nested.exp:1.8 Thu Mar 25 01:42:53 2021 +++ src/tests/usr.bin/xlint/lint1/d_struct_init_nested.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_struct_init_nested.c(78): error: non-constant initializer [177] +d_struct_init_nested.c(79): error: non-constant initializer [177] Index: src/tests/usr.bin/xlint/lint1/c99_init_designator.c diff -u src/tests/usr.bin/xlint/lint1/c99_init_designator.c:1.1 src/tests/usr.bin/xlint/lint1/c99_init_designator.c:1.2 --- src/tests/usr.bin/xlint/lint1/c99_init_designator.c:1.1 Sun Jun 20 18:09:48 2021 +++ src/tests/usr.bin/xlint/lint1/c99_init_designator.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: c99_init_designator.c,v 1.1 2021/06/20 18:09:48 rillig Exp $ */ +/* $NetBSD: c99_init_designator.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ # 3 "c99_init_designator.c" /* @@ -21,7 +21,8 @@ struct point { */ struct point origin = { .x = 0, - ->y = 0, /* expect: syntax error '->' */ + /* expect+1: error: syntax error '->' [249] */ + ->y = 0, }; /* Ensure that the parser can recover from the parse error. */ Index: src/tests/usr.bin/xlint/lint1/c99_init_designator.exp diff -u src/tests/usr.bin/xlint/lint1/c99_init_designator.exp:1.1 src/tests/usr.bin/xlint/lint1/c99_init_designator.exp:1.2 --- src/tests/usr.bin/xlint/lint1/c99_init_designator.exp:1.1 Sun Jun 20 18:09:48 2021 +++ src/tests/usr.bin/xlint/lint1/c99_init_designator.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -c99_init_designator.c(24): error: syntax error '->' [249] +c99_init_designator.c(25): error: syntax error '->' [249] Index: src/tests/usr.bin/xlint/lint1/emit.exp diff -u src/tests/usr.bin/xlint/lint1/emit.exp:1.1 src/tests/usr.bin/xlint/lint1/emit.exp:1.2 --- src/tests/usr.bin/xlint/lint1/emit.exp:1.1 Sun Apr 18 20:02:56 2021 +++ src/tests/usr.bin/xlint/lint1/emit.exp Sat Jan 15 14:22:03 2022 @@ -1,3 +1,3 @@ -emit.c(107): warning: static variable static_int unused [226] -emit.c(127): warning: static function static_return_void_no_parameters declared but not defined [290] -emit.c(146): warning: static function static_function declared but not defined [290] +emit.c(108): warning: static variable static_int unused [226] +emit.c(129): warning: static function static_return_void_no_parameters declared but not defined [290] +emit.c(149): warning: static function static_function declared but not defined [290] Index: src/tests/usr.bin/xlint/lint1/expr_range.exp diff -u src/tests/usr.bin/xlint/lint1/expr_range.exp:1.1 src/tests/usr.bin/xlint/lint1/expr_range.exp:1.2 --- src/tests/usr.bin/xlint/lint1/expr_range.exp:1.1 Sun May 16 00:09:49 2021 +++ src/tests/usr.bin/xlint/lint1/expr_range.exp Sat Jan 15 14:22:03 2022 @@ -1,2 +1,2 @@ expr_range.c(30): warning: statement not reached [193] -expr_range.c(39): warning: statement not reached [193] +expr_range.c(40): warning: statement not reached [193] Index: src/tests/usr.bin/xlint/lint1/feat_stacktrace.c diff -u src/tests/usr.bin/xlint/lint1/feat_stacktrace.c:1.1 src/tests/usr.bin/xlint/lint1/feat_stacktrace.c:1.2 --- src/tests/usr.bin/xlint/lint1/feat_stacktrace.c:1.1 Thu Apr 8 22:18:27 2021 +++ src/tests/usr.bin/xlint/lint1/feat_stacktrace.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: feat_stacktrace.c,v 1.1 2021/04/08 22:18:27 rillig Exp $ */ +/* $NetBSD: feat_stacktrace.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ # 3 "feat_stacktrace.c" /* @@ -23,7 +23,8 @@ * the main file as well. */ # 1 "common_int_types.h" 1 3 4 -typedef int; /* expect: typedef declares no type name */ +/* expect+1: typedef declares no type name [72] */ +typedef int; # 39 "common_int_types.h" 3 4 # 39 "/usr/include/amd64/int_types.h" 2 3 4 # 42 "/usr/include/amd64/types.h" 2 3 4 Index: src/tests/usr.bin/xlint/lint1/feat_stacktrace.exp diff -u src/tests/usr.bin/xlint/lint1/feat_stacktrace.exp:1.1 src/tests/usr.bin/xlint/lint1/feat_stacktrace.exp:1.2 --- src/tests/usr.bin/xlint/lint1/feat_stacktrace.exp:1.1 Thu Apr 8 22:18:27 2021 +++ src/tests/usr.bin/xlint/lint1/feat_stacktrace.exp Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -common_int_types.h(1): warning: typedef declares no type name [72] +common_int_types.h(2): warning: typedef declares no type name [72] included from /usr/include/amd64/int_types.h(7) included from /usr/include/amd64/types.h(41) included from /usr/include/sys/types.h(43) Index: src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c diff -u src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c:1.1 src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c:1.2 --- src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c:1.1 Sun May 2 20:44:46 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_attribute_aligned.c,v 1.1 2021/05/02 20:44:46 rillig Exp $ */ +/* $NetBSD: gcc_attribute_aligned.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ # 3 "gcc_attribute_aligned.c" /* @@ -39,6 +39,7 @@ struct { unsigned int sizeof_fpacc87: sizeof(struct fpacc87) == 10 ? 1 : -1; - /* expect+1: illegal bit-field size: 255 *//*FIXME*/ + /* FIXME: @4 2 + @4 2 + @4 2 + @4 8 + @4 8 + @2 (8 * 10) == 108 */ + /* expect+1: illegal bit-field size: 255 */ unsigned int sizeof_save87: sizeof(struct save87) == 108 ? 1 : -1; }; Index: src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.exp diff -u src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.exp:1.1 src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.exp:1.2 --- src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.exp:1.1 Sun May 2 20:44:46 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -gcc_attribute_aligned.c(43): error: illegal bit-field size: 255 [36] +gcc_attribute_aligned.c(44): error: illegal bit-field size: 255 [36] Index: src/tests/usr.bin/xlint/lint1/lex_floating.c diff -u src/tests/usr.bin/xlint/lint1/lex_floating.c:1.1 src/tests/usr.bin/xlint/lint1/lex_floating.c:1.2 --- src/tests/usr.bin/xlint/lint1/lex_floating.c:1.1 Sat Jun 19 08:30:08 2021 +++ src/tests/usr.bin/xlint/lint1/lex_floating.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_floating.c,v 1.1 2021/06/19 08:30:08 rillig Exp $ */ +/* $NetBSD: lex_floating.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ # 3 "lex_floating.c" /* @@ -25,7 +25,8 @@ test_double(void) { // https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4396272 sinkd(2.2250738585072012e-308); - sinkd(1.23x); /* expect: syntax error 'x' */ + /* expect+1: error: syntax error 'x' [249] */ + sinkd(1.23x); } void Index: src/tests/usr.bin/xlint/lint1/lex_floating.exp diff -u src/tests/usr.bin/xlint/lint1/lex_floating.exp:1.1 src/tests/usr.bin/xlint/lint1/lex_floating.exp:1.2 --- src/tests/usr.bin/xlint/lint1/lex_floating.exp:1.1 Sat Jun 19 08:30:08 2021 +++ src/tests/usr.bin/xlint/lint1/lex_floating.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -lex_floating.c(28): error: syntax error 'x' [249] +lex_floating.c(29): error: syntax error 'x' [249] Index: src/tests/usr.bin/xlint/lint1/op_colon.c diff -u src/tests/usr.bin/xlint/lint1/op_colon.c:1.1 src/tests/usr.bin/xlint/lint1/op_colon.c:1.2 --- src/tests/usr.bin/xlint/lint1/op_colon.c:1.1 Fri Apr 2 17:25:04 2021 +++ src/tests/usr.bin/xlint/lint1/op_colon.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: op_colon.c,v 1.1 2021/04/02 17:25:04 rillig Exp $ */ +/* $NetBSD: op_colon.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ # 3 "op_colon.c" /* @@ -14,22 +14,37 @@ test_merge_qualifiers(_Bool cond, int *p const volatile int *cv) { sink(cond ? p : p); - sink(cond ? p : c); /* expect: 'pointer to const int' */ - sink(cond ? p : v); /* expect: 'pointer to volatile int' */ - sink(cond ? p : cv); /* expect: 'pointer to const volatile int' */ - - sink(cond ? c : p); /* expect: 'pointer to const int' */ - sink(cond ? c : c); /* expect: 'pointer to const int' */ - sink(cond ? c : v); /* expect: 'pointer to const volatile int' */ - sink(cond ? c : cv); /* expect: 'pointer to const volatile int' */ - - sink(cond ? v : p); /* expect: 'pointer to volatile int' */ - sink(cond ? v : c); /* expect: 'pointer to const volatile int' */ - sink(cond ? v : v); /* expect: 'pointer to volatile int' */ - sink(cond ? v : cv); /* expect: 'pointer to const volatile int' */ - - sink(cond ? cv : p); /* expect: 'pointer to const volatile int' */ - sink(cond ? cv : c); /* expect: 'pointer to const volatile int' */ - sink(cond ? cv : v); /* expect: 'pointer to const volatile int' */ - sink(cond ? cv : cv); /* expect: 'pointer to const volatile int' */ + /* expect+1: 'pointer to const int' */ + sink(cond ? p : c); + /* expect+1: 'pointer to volatile int' */ + sink(cond ? p : v); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? p : cv); + + /* expect+1: 'pointer to const int' */ + sink(cond ? c : p); + /* expect+1: 'pointer to const int' */ + sink(cond ? c : c); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? c : v); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? c : cv); + + /* expect+1: 'pointer to volatile int' */ + sink(cond ? v : p); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? v : c); + /* expect+1: 'pointer to volatile int' */ + sink(cond ? v : v); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? v : cv); + + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? cv : p); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? cv : c); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? cv : v); + /* expect+1: 'pointer to const volatile int' */ + sink(cond ? cv : cv); } Index: src/tests/usr.bin/xlint/lint1/op_colon.exp diff -u src/tests/usr.bin/xlint/lint1/op_colon.exp:1.1 src/tests/usr.bin/xlint/lint1/op_colon.exp:1.2 --- src/tests/usr.bin/xlint/lint1/op_colon.exp:1.1 Fri Apr 2 17:25:04 2021 +++ src/tests/usr.bin/xlint/lint1/op_colon.exp Sat Jan 15 14:22:03 2022 @@ -1,15 +1,15 @@ -op_colon.c(17): warning: converting 'pointer to const int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(18): warning: converting 'pointer to volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(19): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(21): warning: converting 'pointer to const int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(22): warning: converting 'pointer to const int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(23): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(24): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(26): warning: converting 'pointer to volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(27): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(28): warning: converting 'pointer to volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(18): warning: converting 'pointer to const int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(20): warning: converting 'pointer to volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(22): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(25): warning: converting 'pointer to const int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(27): warning: converting 'pointer to const int' to incompatible 'pointer to void' for argument 1 [153] op_colon.c(29): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] op_colon.c(31): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(32): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(33): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] -op_colon.c(34): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(34): warning: converting 'pointer to volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(36): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(38): warning: converting 'pointer to volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(40): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(43): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(45): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(47): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] +op_colon.c(49): warning: converting 'pointer to const volatile int' to incompatible 'pointer to void' for argument 1 [153] Index: src/tests/usr.bin/xlint/lint1/stmt_for.c diff -u src/tests/usr.bin/xlint/lint1/stmt_for.c:1.1 src/tests/usr.bin/xlint/lint1/stmt_for.c:1.2 --- src/tests/usr.bin/xlint/lint1/stmt_for.c:1.1 Sat Jun 19 19:59:02 2021 +++ src/tests/usr.bin/xlint/lint1/stmt_for.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: stmt_for.c,v 1.1 2021/06/19 19:59:02 rillig Exp $ */ +/* $NetBSD: stmt_for.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ # 3 "stmt_for.c" /* @@ -10,7 +10,8 @@ void test(void) { - for (0 0; /* expect: syntax error '0' */ + /* expect+1: error: syntax error '0' [249] */ + for (0 0; } /* expect+1: cannot recover from previous errors */ Index: src/tests/usr.bin/xlint/lint1/stmt_for.exp diff -u src/tests/usr.bin/xlint/lint1/stmt_for.exp:1.1 src/tests/usr.bin/xlint/lint1/stmt_for.exp:1.2 --- src/tests/usr.bin/xlint/lint1/stmt_for.exp:1.1 Sat Jun 19 19:59:02 2021 +++ src/tests/usr.bin/xlint/lint1/stmt_for.exp Sat Jan 15 14:22:03 2022 @@ -1,2 +1,2 @@ -stmt_for.c(13): error: syntax error '0' [249] -stmt_for.c(17): error: cannot recover from previous errors [224] +stmt_for.c(14): error: syntax error '0' [249] +stmt_for.c(18): error: cannot recover from previous errors [224] Index: src/tests/usr.bin/xlint/lint1/d_c99_bool.c diff -u src/tests/usr.bin/xlint/lint1/d_c99_bool.c:1.7 src/tests/usr.bin/xlint/lint1/d_c99_bool.c:1.8 --- src/tests/usr.bin/xlint/lint1/d_c99_bool.c:1.7 Tue Mar 30 14:25:28 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_bool.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_c99_bool.c,v 1.7 2021/03/30 14:25:28 rillig Exp $ */ +/* $NetBSD: d_c99_bool.c,v 1.8 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_c99_bool.c" /* @@ -12,19 +12,24 @@ /* Below, each false statement produces "negative array dimension" [20]. */ int int_0_converts_to_false[(_Bool)0 ? -1 : 1]; -int int_0_converts_to_true_[(_Bool)0 ? 1 : -1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int int_0_converts_to_true_[(_Bool)0 ? 1 : -1]; -int int_1_converts_to_false[(_Bool)1 ? -1 : 1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int int_1_converts_to_false[(_Bool)1 ? -1 : 1]; int int_1_converts_to_true_[(_Bool)1 ? 1 : -1]; -int int_2_converts_to_false[(_Bool)2 ? -1 : 1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int int_2_converts_to_false[(_Bool)2 ? -1 : 1]; int int_2_converts_to_true_[(_Bool)2 ? 1 : -1]; -int int_256_converts_to_false[(_Bool)256 ? -1 : 1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int int_256_converts_to_false[(_Bool)256 ? -1 : 1]; int int_256_converts_to_true_[(_Bool)256 ? 1 : -1]; int null_pointer_converts_to_false[(_Bool)(void *)0 ? -1 : 1]; -int null_pointer_converts_to_true_[(_Bool)(void *)0 ? 1 : -1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int null_pointer_converts_to_true_[(_Bool)(void *)0 ? 1 : -1]; /* * XXX: lint does not treat the address of a global variable as a constant @@ -38,23 +43,29 @@ char ch; int nonnull_pointer_converts_to_false[(_Bool)&ch ? -1 : 1]; int nonnull_pointer_converts_to_true_[(_Bool)&ch ? 1 : -1]; -int double_minus_1_0_converts_to_false[(_Bool)-1.0 ? -1 : 1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int double_minus_1_0_converts_to_false[(_Bool)-1.0 ? -1 : 1]; int double_minus_1_0_converts_to_true_[(_Bool)-1.0 ? 1 : -1]; -int double_minus_0_5_converts_to_false[(_Bool)-0.5 ? -1 : 1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int double_minus_0_5_converts_to_false[(_Bool)-0.5 ? -1 : 1]; int double_minus_0_5_converts_to_true_[(_Bool)-0.5 ? 1 : -1]; int double_minus_0_0_converts_to_false[(_Bool)-0.0 ? -1 : 1]; -int double_minus_0_0_converts_to_true_[(_Bool)-0.0 ? 1 : -1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int double_minus_0_0_converts_to_true_[(_Bool)-0.0 ? 1 : -1]; int double_0_0_converts_to_false[(_Bool)0.0 ? -1 : 1]; -int double_0_0_converts_to_true_[(_Bool)0.0 ? 1 : -1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int double_0_0_converts_to_true_[(_Bool)0.0 ? 1 : -1]; /* The C99 rationale explains in 6.3.1.2 why (_Bool)0.5 is true. */ -int double_0_5_converts_to_false[(_Bool)0.5 ? -1 : 1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int double_0_5_converts_to_false[(_Bool)0.5 ? -1 : 1]; int double_0_5_converts_to_true_[(_Bool)0.5 ? 1 : -1]; -int double_1_0_converts_to_false[(_Bool)1.0 ? -1 : 1]; /* expect: 20 */ +/* expect+1: error: negative array dimension (-1) [20] */ +int double_1_0_converts_to_false[(_Bool)1.0 ? -1 : 1]; int double_1_0_converts_to_true_[(_Bool)1.0 ? 1 : -1]; _Bool Index: src/tests/usr.bin/xlint/lint1/d_init_pop_member.exp diff -u src/tests/usr.bin/xlint/lint1/d_init_pop_member.exp:1.7 src/tests/usr.bin/xlint/lint1/d_init_pop_member.exp:1.8 --- src/tests/usr.bin/xlint/lint1/d_init_pop_member.exp:1.7 Fri Apr 9 20:12:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_init_pop_member.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_init_pop_member.c(38): warning: 'st' set but not used in function 'func' [191] +d_init_pop_member.c(39): warning: 'st' set but not used in function 'func' [191] Index: src/tests/usr.bin/xlint/lint1/d_c99_bool.exp diff -u src/tests/usr.bin/xlint/lint1/d_c99_bool.exp:1.6 src/tests/usr.bin/xlint/lint1/d_c99_bool.exp:1.7 --- src/tests/usr.bin/xlint/lint1/d_c99_bool.exp:1.6 Sun Mar 21 20:44:59 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_bool.exp Sat Jan 15 14:22:03 2022 @@ -1,11 +1,11 @@ -d_c99_bool.c(15): error: negative array dimension (-1) [20] -d_c99_bool.c(17): error: negative array dimension (-1) [20] -d_c99_bool.c(20): error: negative array dimension (-1) [20] +d_c99_bool.c(16): error: negative array dimension (-1) [20] +d_c99_bool.c(19): error: negative array dimension (-1) [20] d_c99_bool.c(23): error: negative array dimension (-1) [20] d_c99_bool.c(27): error: negative array dimension (-1) [20] -d_c99_bool.c(41): error: negative array dimension (-1) [20] -d_c99_bool.c(44): error: negative array dimension (-1) [20] -d_c99_bool.c(48): error: negative array dimension (-1) [20] +d_c99_bool.c(32): error: negative array dimension (-1) [20] +d_c99_bool.c(47): error: negative array dimension (-1) [20] d_c99_bool.c(51): error: negative array dimension (-1) [20] -d_c99_bool.c(54): error: negative array dimension (-1) [20] -d_c99_bool.c(57): error: negative array dimension (-1) [20] +d_c99_bool.c(56): error: negative array dimension (-1) [20] +d_c99_bool.c(60): error: negative array dimension (-1) [20] +d_c99_bool.c(64): error: negative array dimension (-1) [20] +d_c99_bool.c(68): error: negative array dimension (-1) [20] Index: src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c diff -u src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c:1.6 src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c:1.7 --- src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c:1.6 Sun Jun 20 11:42:26 2021 +++ src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_gcc_compound_statements1.c,v 1.6 2021/06/20 11:42:26 rillig Exp $ */ +/* $NetBSD: d_gcc_compound_statements1.c,v 1.7 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_gcc_compound_statements1.c" /* GCC compound statement with expression */ @@ -20,8 +20,10 @@ foo(unsigned long z) * fault. */ int c = ({ - return 3; /* expect: return outside function */ -}); /* expect: cannot initialize 'int' from 'void' */ + /* expect+1: error: syntax error 'return outside function' [249] */ + return 3; +}); +/* expect-1: error: cannot initialize 'int' from 'void' [185] */ void function(void) @@ -31,6 +33,7 @@ function(void) * syntax error, which made an expression NULL. */ ({ - 0->e; /* expect: type 'int' does not have member 'e' */ + /* expect+1: error: type 'int' does not have member 'e' [101] */ + 0->e; }); } Index: src/tests/usr.bin/xlint/lint1/d_struct_init_nested.c diff -u src/tests/usr.bin/xlint/lint1/d_struct_init_nested.c:1.6 src/tests/usr.bin/xlint/lint1/d_struct_init_nested.c:1.7 --- src/tests/usr.bin/xlint/lint1/d_struct_init_nested.c:1.6 Thu Mar 25 01:42:53 2021 +++ src/tests/usr.bin/xlint/lint1/d_struct_init_nested.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_struct_init_nested.c,v 1.6 2021/03/25 01:42:53 rillig Exp $ */ +/* $NetBSD: d_struct_init_nested.c,v 1.7 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_struct_init_nested.c" /* @@ -75,6 +75,7 @@ struct Inner2 inner = { }; struct Outer3Inner2 o3i2 = { O1C, - inner, /* expect: non-constant initializer */ + /* expect+1: error: non-constant initializer [177] */ + inner, O3C }; Index: src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c diff -u src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c:1.35 src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c:1.36 --- src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c:1.35 Sat Nov 20 17:27:46 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_c99_bool_strict.c,v 1.35 2021/11/20 17:27:46 rillig Exp $ */ +/* $NetBSD: d_c99_bool_strict.c,v 1.36 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_c99_bool_strict.c" /* @@ -124,29 +124,38 @@ strict_bool_constant(void) { accept_bool(__lint_false); accept_bool(__lint_true); - accept_bool(0); /* expect: 334 */ - accept_bool(1); /* expect: 334 */ - accept_bool(2); /* expect: 334 */ + /* expect+1: error: argument #1 expects '_Bool', gets passed 'int' [334] */ + accept_bool(0); + /* expect+1: error: argument #1 expects '_Bool', gets passed 'int' [334] */ + accept_bool(1); + /* expect+1: error: argument #1 expects '_Bool', gets passed 'int' [334] */ + accept_bool(2); } enum strict_bool_constant_expressions { /* Ok: __lint_false is a boolean constant expression. */ - FALSE = __lint_false ? 100 : 101, /* expect: 161 */ + /* expect+1: warning: constant in conditional context [161] */ + FALSE = __lint_false ? 100 : 101, /* Ok: __lint_true is a boolean constant expression. */ - TRUE = __lint_true ? 100 : 101, /* expect: 161 */ + /* expect+1: warning: constant in conditional context [161] */ + TRUE = __lint_true ? 100 : 101, /* Not ok: an integer is not a boolean constant expression. */ - INT0 = 0 ? 100 : 101, /* expect: 331 */ + /* expect+1: error: left operand of '?' must be bool, not 'int' [331] */ + INT0 = 0 ? 100 : 101, /* Not ok: an integer is not a boolean constant expression. */ - INT1 = 1 ? 100 : 101, /* expect: 331 */ + /* expect+1: error: left operand of '?' must be bool, not 'int' [331] */ + INT1 = 1 ? 100 : 101, /* Not ok: 2 is not a boolean constant. */ - INT2 = 2 ? 100 : 101, /* expect: 331 */ + /* expect+1: error: left operand of '?' must be bool, not 'int' [331] */ + INT2 = 2 ? 100 : 101, /* Not ok: compound integer expressions are not bool. */ - ARITH = (2 - 2) ? 100 : 101, /* expect: 331 */ + /* expect+1: error: left operand of '?' must be bool, not 'int' [331] */ + ARITH = (2 - 2) ? 100 : 101, /* * Without strict bool mode, these two variants of an expression can @@ -156,32 +165,48 @@ enum strict_bool_constant_expressions { * In strict bool mode, the resulting expression can be compared * against 0 to achieve the same effect (so +0 != 0 or 1 + 0 != 0). */ - BINARY_PLUS = (1 + 0) ? 100 : 101, /* expect: 331 */ - UNARY_PLUS = (+0) ? 100 : 101, /* expect: 331 */ + /* expect+1: error: left operand of '?' must be bool, not 'int' [331] */ + BINARY_PLUS = (1 + 0) ? 100 : 101, + /* expect+1: error: left operand of '?' must be bool, not 'int' [331] */ + UNARY_PLUS = (+0) ? 100 : 101, /* The main operator '>' has return type bool. */ - Q1 = (13 > 12) ? 100 : 101, /* expect: 161 */ + /* expect+1: warning: constant in conditional context [161] */ + Q1 = (13 > 12) ? 100 : 101, /* * The parenthesized expression has type int and thus cannot be * used as the controlling expression in the '?:' operator. */ - Q2 = (13 > 12 ? 1 : 7) ? 100 : 101, /* expect: 161 *//* expect: 331 */ + /* expect+2: warning: constant in conditional context [161] */ + /* expect+1: error: left operand of '?' must be bool, not 'int' [331] */ + Q2 = (13 > 12 ? 1 : 7) ? 100 : 101, - BINAND_BOOL = __lint_false & __lint_true, /* expect: 55 */ + /* expect+1: error: integral constant expression expected [55] */ + BINAND_BOOL = __lint_false & __lint_true, BINAND_INT = 0 & 1, - BINXOR_BOOL = __lint_false ^ __lint_true, /* expect: 55 */ + /* expect+1: error: integral constant expression expected [55] */ + BINXOR_BOOL = __lint_false ^ __lint_true, BINXOR_INT = 0 ^ 1, - BINOR_BOOL = __lint_false | __lint_true, /* expect: 55 */ + /* expect+1: error: integral constant expression expected [55] */ + BINOR_BOOL = __lint_false | __lint_true, BINOR_INT = 0 | 1, - LOGOR_BOOL = __lint_false || __lint_true, /* expect: 161 *//* expect: 55 */ - LOGOR_INT = 0 || 1, /* expect: 331 *//* expect: 332 */ - - LOGAND_BOOL = __lint_false && __lint_true, /* expect: 161 *//* expect: 55 */ - LOGAND_INT = 0 && 1, /* expect: 331 *//* expect: 332 */ + /* expect+2: warning: constant in conditional context [161] */ + /* expect+1: error: integral constant expression expected [55] */ + LOGOR_BOOL = __lint_false || __lint_true, + /* expect+2: error: left operand of '||' must be bool, not 'int' [331] */ + /* expect+1: error: right operand of '||' must be bool, not 'int' [332] */ + LOGOR_INT = 0 || 1, + + /* expect+2: warning: constant in conditional context [161] */ + /* expect+1: error: integral constant expression expected [55] */ + LOGAND_BOOL = __lint_false && __lint_true, + /* expect+2: error: left operand of '&&' must be bool, not 'int' [331] */ + /* expect+1: error: right operand of '&&' must be bool, not 'int' [332] */ + LOGAND_INT = 0 && 1, }; /* @@ -201,14 +226,18 @@ strict_bool_bit_fields(void) bool b; b = flags.bool_flag; - b = flags.uint_flag; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != unsigned int) [107] */ + b = flags.uint_flag; flags.bool_flag = b; - flags.uint_flag = b; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (unsigned int != _Bool) [107] */ + flags.uint_flag = b; b = flags_ptr->bool_flag; - b = flags_ptr->uint_flag; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != unsigned int) [107] */ + b = flags_ptr->uint_flag; flags_ptr->bool_flag = b; - flags_ptr->uint_flag = b; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (unsigned int != _Bool) [107] */ + flags_ptr->uint_flag = b; } void @@ -250,37 +279,44 @@ strict_bool_conversion_return_bool(bool bool strict_bool_conversion_return_0(void) { - return 0; /* expect: 211 */ + /* expect+1: error: return value type mismatch (_Bool) and (int) [211] */ + return 0; } bool strict_bool_conversion_return_1(void) { - return 1; /* expect: 211 */ + /* expect+1: error: return value type mismatch (_Bool) and (int) [211] */ + return 1; } bool strict_bool_conversion_return_2(void) { - return 2; /* expect: 211 */ + /* expect+1: error: return value type mismatch (_Bool) and (int) [211] */ + return 2; } +/* expect+2: warning: argument 'p' unused in function 'strict_bool_conversion_return_pointer' [231] */ bool -strict_bool_conversion_return_pointer(const void *p) /* expect: 231 */ +strict_bool_conversion_return_pointer(const void *p) { - return p; /* expect: 211 */ + /* expect+1: error: return value type mismatch (_Bool) and (pointer) [211] */ + return p; } char strict_bool_conversion_return_false_as_char(void) { - return __lint_false; /* expect: 211 */ + /* expect+1: error: return value type mismatch (char) and (_Bool) [211] */ + return __lint_false; } char strict_bool_conversion_return_true_as_char(void) { - return __lint_true; /* expect: 211 */ + /* expect+1: error: return value type mismatch (char) and (_Bool) [211] */ + return __lint_true; } @@ -298,16 +334,23 @@ strict_bool_conversion_function_argument take_arguments(b, i, p); /* Implicitly converting bool to other scalar types. */ - take_arguments(b, b, b); /* expect: 334 *//* expect: 334 */ + /* expect+2: error: argument #2 expects 'int', gets passed '_Bool' [334] */ + /* expect+1: error: argument #3 expects 'pointer', gets passed '_Bool' [334] */ + take_arguments(b, b, b); /* Implicitly converting int to bool (arg #1). */ - take_arguments(i, i, i); /* expect: 334 *//* expect: 154 */ + /* expect+2: error: argument #1 expects '_Bool', gets passed 'int' [334] */ + /* expect+1: warning: illegal combination of pointer (pointer to const char) and integer (int), arg #3 [154] */ + take_arguments(i, i, i); /* Implicitly converting pointer to bool (arg #1). */ - take_arguments(p, p, p); /* expect: 334 *//* expect: 154 */ + /* expect+2: error: argument #1 expects '_Bool', gets passed 'pointer' [334] */ + /* expect+1: warning: illegal combination of integer (int) and pointer (pointer to const char), arg #2 [154] */ + take_arguments(p, p, p); /* Passing bool as vararg. */ - take_arguments(b, i, p, b, i, p); /* TODO: expect: arg#4 */ + /* TODO: maybe expect+1: arg#4 should not be bool but scalar */ + take_arguments(b, i, p, b, i, p); /* Passing a bool constant. */ take_arguments(__lint_false, i, p); @@ -316,9 +359,12 @@ strict_bool_conversion_function_argument take_arguments(__lint_true, i, p); /* Trying to pass integer constants. */ - take_arguments(0, i, p); /* expect: 334 */ - take_arguments(1, i, p); /* expect: 334 */ - take_arguments(2, i, p); /* expect: 334 */ + /* expect+1: error: argument #1 expects '_Bool', gets passed 'int' [334] */ + take_arguments(0, i, p); + /* expect+1: error: argument #1 expects '_Bool', gets passed 'int' [334] */ + take_arguments(1, i, p); + /* expect+1: error: argument #1 expects '_Bool', gets passed 'int' [334] */ + take_arguments(2, i, p); } void @@ -327,32 +373,43 @@ strict_bool_conversion_between_bool_and_ bool b; int i; - b = 0; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + b = 0; b = __lint_false; - b = 1; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + b = 1; b = __lint_true; i = 0; - i = __lint_false; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = __lint_false; i = 1; - i = __lint_true; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = __lint_true; - i = b; /* expect: 107 */ - b = i; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = b; + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + b = i; } +/* expect+2: warning: argument 'b' unused in function 'strict_bool_conversion_from_bool_to_scalar' [231] */ void -strict_bool_conversion_from_bool_to_scalar(bool b) /* expect: 231 */ +strict_bool_conversion_from_bool_to_scalar(bool b) { int i; unsigned u; double d; void *p; - i = b; /* expect: 107 */ - u = b; /* expect: 107 */ - d = b; /* expect: 107 */ - p = b; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = b; + /* expect+1: error: operands of '=' have incompatible types (unsigned int != _Bool) [107] */ + u = b; + /* expect+1: error: operands of '=' have incompatible types (double != _Bool) [107] */ + d = b; + /* expect+1: error: operands of '=' have incompatible types (pointer != _Bool) [107] */ + p = b; } /* @@ -364,38 +421,48 @@ strict_bool_conversion_from_bool_to_scal void strict_bool_controlling_expression(bool b, int i, double d, const void *p) { - if (__lint_false) /* expect: 161 */ - do_nothing(); /* expect: statement not reached */ + /* expect+1: warning: constant in conditional context [161] */ + if (__lint_false) + do_nothing(); + /* expect-1: warning: statement not reached [193] */ - if (__lint_true) /* expect: 161 */ + /* expect+1: warning: constant in conditional context [161] */ + if (__lint_true) do_nothing(); if (b) do_nothing(); - if (/*CONSTCOND*/0) /* expect: 333 */ - do_nothing(); /* expect: statement not reached [193] */ + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ + if (/*CONSTCOND*/0) + do_nothing(); + /* expect-1: warning: statement not reached [193] */ - if (/*CONSTCOND*/1) /* expect: 333 */ + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ + if (/*CONSTCOND*/1) do_nothing(); - if (/*CONSTCOND*/2) /* expect: 333 */ + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ + if (/*CONSTCOND*/2) do_nothing(); /* Not allowed: There is no implicit conversion from scalar to bool. */ - if (i) /* expect: 333 */ + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ + if (i) do_nothing(); if (i != 0) do_nothing(); /* Not allowed: There is no implicit conversion from scalar to bool. */ - if (d) /* expect: 333 */ + /* expect+1: error: controlling expression must be bool, not 'double' [333] */ + if (d) do_nothing(); if (d != 0.0) do_nothing(); /* Not allowed: There is no implicit conversion from scalar to bool. */ - if (p) /* expect: 333 */ + /* expect+1: error: controlling expression must be bool, not 'pointer' [333] */ + if (p) do_nothing(); if (p != (void *)0) do_nothing(); @@ -416,15 +483,23 @@ strict_bool_operand_unary_not(void) b = !b; b = !!!b; - b = !__lint_false; /* expect: 161 *//* expect: 239 */ - b = !__lint_true; /* expect: 161 *//* expect: 239 */ + /* expect+2: warning: constant in conditional context [161] */ + /* expect+1: warning: constant argument to '!' [239] */ + b = !__lint_false; + /* expect+2: warning: constant in conditional context [161] */ + /* expect+1: warning: constant argument to '!' [239] */ + b = !__lint_true; int i = 0; - i = !i; /* expect: 330 */ - i = !!!i; /* expect: 330 */ - i = !0; /* expect: 330 */ - i = !1; /* expect: 330 */ + /* expect+1: error: operand of '!' must be bool, not 'int' [330] */ + i = !i; + /* expect+1: error: operand of '!' must be bool, not 'int' [330] */ + i = !!!i; + /* expect+1: error: operand of '!' must be bool, not 'int' [330] */ + i = !0; + /* expect+1: error: operand of '!' must be bool, not 'int' [330] */ + i = !1; } void @@ -479,13 +554,15 @@ strict_bool_operand_binary_dot_arrow(voi struct bool_struct bs = { __lint_true }; b = bs.b; bs.b = b; - bs.b = 0; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + bs.b = 0; /* Access a struct member using the '->' operator. */ struct bool_struct *bsp = &bs; b = bsp->b; bsp->b = b; - bsp->b = 0; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + bsp->b = 0; } int @@ -501,14 +578,23 @@ strict_bool_operand_binary(bool b, int i * The right-hand sides of these assignments implicitly convert from * scalar to bool. */ - b = !i; /* expect: 330 */ - b = i && i; /* expect: 331 *//* expect: 332 */ - b = i || i; /* expect: 331 *//* expect: 332 */ - - b = b && 0; /* expect: 332 */ - b = 0 && b; /* expect: 331 */ - b = b || 0; /* expect: 332 */ - b = 0 || b; /* expect: 331 */ + /* expect+1: error: operand of '!' must be bool, not 'int' [330] */ + b = !i; + /* expect+2: error: left operand of '&&' must be bool, not 'int' [331] */ + /* expect+1: error: right operand of '&&' must be bool, not 'int' [332] */ + b = i && i; + /* expect+2: error: left operand of '||' must be bool, not 'int' [331] */ + /* expect+1: error: right operand of '||' must be bool, not 'int' [332] */ + b = i || i; + + /* expect+1: error: right operand of '&&' must be bool, not 'int' [332] */ + b = b && 0; + /* expect+1: error: left operand of '&&' must be bool, not 'int' [331] */ + b = 0 && b; + /* expect+1: error: right operand of '||' must be bool, not 'int' [332] */ + b = b || 0; + /* expect+1: error: left operand of '||' must be bool, not 'int' [331] */ + b = 0 || b; return i; } @@ -517,30 +603,59 @@ void strict_bool_operand_unary_all(bool b) { b = !b; - b = ~b; /* expect: 335 */ - ++b; /* expect: 335 */ - --b; /* expect: 335 */ - b++; /* expect: 335 */ - b--; /* expect: 335 */ - b = +b; /* expect: 335 */ - b = -b; /* expect: 335 */ + /* expect+1: error: operand of '~' must not be bool [335] */ + b = ~b; + /* expect+1: error: operand of '++x' must not be bool [335] */ + ++b; + /* expect+1: error: operand of '--x' must not be bool [335] */ + --b; + /* expect+1: error: operand of 'x++' must not be bool [335] */ + b++; + /* expect+1: error: operand of 'x--' must not be bool [335] */ + b--; + /* expect+1: error: operand of '+' must not be bool [335] */ + b = +b; + /* expect+1: error: operand of '-' must not be bool [335] */ + b = -b; } void strict_bool_operand_binary_all(bool b, unsigned u) { - b = b * b; /* expect: 336 *//* expect: 337 */ - b = b / b; /* expect: 336 *//* expect: 337 */ - b = b % b; /* expect: 336 *//* expect: 337 */ - b = b + b; /* expect: 336 *//* expect: 337 */ - b = b - b; /* expect: 336 *//* expect: 337 */ - b = b << b; /* expect: 336 *//* expect: 337 */ - b = b >> b; /* expect: 336 *//* expect: 337 */ - - b = b < b; /* expect: 336 *//* expect: 337 */ - b = b <= b; /* expect: 336 *//* expect: 337 */ - b = b > b; /* expect: 336 *//* expect: 337 */ - b = b >= b; /* expect: 336 *//* expect: 337 */ + /* expect+2: error: left operand of '*' must not be bool [336] */ + /* expect+1: error: right operand of '*' must not be bool [337] */ + b = b * b; + /* expect+2: error: left operand of '/' must not be bool [336] */ + /* expect+1: error: right operand of '/' must not be bool [337] */ + b = b / b; + /* expect+2: error: left operand of '%' must not be bool [336] */ + /* expect+1: error: right operand of '%' must not be bool [337] */ + b = b % b; + /* expect+2: error: left operand of '+' must not be bool [336] */ + /* expect+1: error: right operand of '+' must not be bool [337] */ + b = b + b; + /* expect+2: error: left operand of '-' must not be bool [336] */ + /* expect+1: error: right operand of '-' must not be bool [337] */ + b = b - b; + /* expect+2: error: left operand of '<<' must not be bool [336] */ + /* expect+1: error: right operand of '<<' must not be bool [337] */ + b = b << b; + /* expect+2: error: left operand of '>>' must not be bool [336] */ + /* expect+1: error: right operand of '>>' must not be bool [337] */ + b = b >> b; + + /* expect+2: error: left operand of '<' must not be bool [336] */ + /* expect+1: error: right operand of '<' must not be bool [337] */ + b = b < b; + /* expect+2: error: left operand of '<=' must not be bool [336] */ + /* expect+1: error: right operand of '<=' must not be bool [337] */ + b = b <= b; + /* expect+2: error: left operand of '>' must not be bool [336] */ + /* expect+1: error: right operand of '>' must not be bool [337] */ + b = b > b; + /* expect+2: error: left operand of '>=' must not be bool [336] */ + /* expect+1: error: right operand of '>=' must not be bool [337] */ + b = b >= b; b = b == b; b = b != b; @@ -552,42 +667,74 @@ strict_bool_operand_binary_all(bool b, u b = b ? b : b; b = b; - b *= b; /* expect: 336 *//* expect: 337 */ - b /= b; /* expect: 336 *//* expect: 337 */ - b %= b; /* expect: 336 *//* expect: 337 */ - b += b; /* expect: 336 *//* expect: 337 */ - b -= b; /* expect: 336 *//* expect: 337 */ - b <<= b; /* expect: 336 *//* expect: 337 */ - b >>= b; /* expect: 336 *//* expect: 337 */ + /* expect+2: error: left operand of '*=' must not be bool [336] */ + /* expect+1: error: right operand of '*=' must not be bool [337] */ + b *= b; + /* expect+2: error: left operand of '/=' must not be bool [336] */ + /* expect+1: error: right operand of '/=' must not be bool [337] */ + b /= b; + /* expect+2: error: left operand of '%=' must not be bool [336] */ + /* expect+1: error: right operand of '%=' must not be bool [337] */ + b %= b; + /* expect+2: error: left operand of '+=' must not be bool [336] */ + /* expect+1: error: right operand of '+=' must not be bool [337] */ + b += b; + /* expect+2: error: left operand of '-=' must not be bool [336] */ + /* expect+1: error: right operand of '-=' must not be bool [337] */ + b -= b; + /* expect+2: error: left operand of '<<=' must not be bool [336] */ + /* expect+1: error: right operand of '<<=' must not be bool [337] */ + b <<= b; + /* expect+2: error: left operand of '>>=' must not be bool [336] */ + /* expect+1: error: right operand of '>>=' must not be bool [337] */ + b >>= b; b &= b; b ^= b; b |= b; /* Operations with mixed types. */ - u = b * u; /* expect: 336 */ - u = u * b; /* expect: 337 */ - u = b / u; /* expect: 336 */ - u = u / b; /* expect: 337 */ - u = b % u; /* expect: 336 */ - u = u % b; /* expect: 337 */ - u = b + u; /* expect: 336 */ - u = u + b; /* expect: 337 */ - u = b - u; /* expect: 336 */ - u = u - b; /* expect: 337 */ - u = b << u; /* expect: 336 */ - u = u << b; /* expect: 337 */ - u = b >> u; /* expect: 336 */ - u = u >> b; /* expect: 337 */ + /* expect+1: error: left operand of '*' must not be bool [336] */ + u = b * u; + /* expect+1: error: right operand of '*' must not be bool [337] */ + u = u * b; + /* expect+1: error: left operand of '/' must not be bool [336] */ + u = b / u; + /* expect+1: error: right operand of '/' must not be bool [337] */ + u = u / b; + /* expect+1: error: left operand of '%' must not be bool [336] */ + u = b % u; + /* expect+1: error: right operand of '%' must not be bool [337] */ + u = u % b; + /* expect+1: error: left operand of '+' must not be bool [336] */ + u = b + u; + /* expect+1: error: right operand of '+' must not be bool [337] */ + u = u + b; + /* expect+1: error: left operand of '-' must not be bool [336] */ + u = b - u; + /* expect+1: error: right operand of '-' must not be bool [337] */ + u = u - b; + /* expect+1: error: left operand of '<<' must not be bool [336] */ + u = b << u; + /* expect+1: error: right operand of '<<' must not be bool [337] */ + u = u << b; + /* expect+1: error: left operand of '>>' must not be bool [336] */ + u = b >> u; + /* expect+1: error: right operand of '>>' must not be bool [337] */ + u = u >> b; u = b ? u : u; - u = b ? b : u; /* expect: 107 */ - u = b ? u : b; /* expect: 107 */ + /* expect+1: error: operands of ':' have incompatible types (_Bool != unsigned int) [107] */ + u = b ? b : u; + /* expect+1: error: operands of ':' have incompatible types (unsigned int != _Bool) [107] */ + u = b ? u : b; } bool strict_bool_operand_binary_comma(bool b, int i) { - b = (b, !b); /* expect: 129 */ - i = (i, i + 1); /* expect: 129 */ + /* expect+1: warning: expression has null effect [129] */ + b = (b, !b); + /* expect+1: warning: expression has null effect [129] */ + i = (i, i + 1); return b; } @@ -600,10 +747,14 @@ strict_bool_operand_binary_comma(bool b, void strict_bool_operator_result(bool b) { - char c = b; /* expect: 107 */ - int i = b; /* expect: 107 */ - double d = b; /* expect: 107 */ - void *p = b; /* expect: 107 */ + /* expect+1: error: operands of 'init' have incompatible types (char != _Bool) [107] */ + char c = b; + /* expect+1: error: operands of 'init' have incompatible types (int != _Bool) [107] */ + int i = b; + /* expect+1: error: operands of 'init' have incompatible types (double != _Bool) [107] */ + double d = b; + /* expect+1: error: operands of 'init' have incompatible types (pointer != _Bool) [107] */ + void *p = b; /* The right-hand sides of these assignments are all ok. */ b = !b; @@ -620,15 +771,24 @@ strict_bool_operator_result(bool b) * The right-hand sides of these assignments are not ok, they * implicitly convert from bool to int. */ - i = !b; /* expect: 107 */ - i = i == i; /* expect: 107 */ - i = i != i; /* expect: 107 */ - i = i < i; /* expect: 107 */ - i = i <= i; /* expect: 107 */ - i = i >= i; /* expect: 107 */ - i = i > i; /* expect: 107 */ - i = b && b; /* expect: 107 */ - i = b || b; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = !b; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = i == i; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = i != i; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = i < i; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = i <= i; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = i >= i; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = i > i; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = b && b; + /* expect+1: error: operands of '=' have incompatible types (int != _Bool) [107] */ + i = b || b; } @@ -655,8 +815,9 @@ enum Flags { FLAG28 = 1 << 28 }; +/* expect+2: warning: argument 'flags' unused in function 'strict_bool_bitwise_and_enum' [231] */ void -strict_bool_bitwise_and_enum(enum Flags flags) /* expect: 231 */ +strict_bool_bitwise_and_enum(enum Flags flags) { bool b; @@ -666,7 +827,8 @@ strict_bool_bitwise_and_enum(enum Flags * because it would be too confusing if FLAG0 would work and all the * other flags wouldn't. */ - b = flags & FLAG0; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + b = flags & FLAG0; /* * Assuming that FLAG1 is set in flags, a _Bool variable stores this @@ -674,14 +836,16 @@ strict_bool_bitwise_and_enum(enum Flags * it as 2, as that is the integer value of FLAG1. Since FLAG1 fits * in a uint8_t, no truncation takes place. */ - b = flags & FLAG1; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + b = flags & FLAG1; /* * In a _Bool variable, FLAG28 is stored as 1, since it is unequal to * zero. In a uint8_t, the stored value would be 0 since bit 28 is * out of range for a uint8_t and thus gets truncated. */ - b = flags & FLAG28; /* expect: 107 */ + /* expect+1: error: operands of '=' have incompatible types (_Bool != int) [107] */ + b = flags & FLAG28; } /* @@ -720,7 +884,8 @@ query_flag_from_enum_bit_set(enum Flags void strict_bool_operator_eq_bool_int(void) { - (void)(strict_bool_conversion_return_false() == 0); /* expect: 107 */ + /* expect+1: error: operands of '==' have incompatible types (_Bool != int) [107] */ + (void)(strict_bool_conversion_return_false() == 0); } void @@ -732,7 +897,8 @@ strict_bool_assign_bit_field_then_compar struct s s = { __lint_false }; - (void)((s.flag = s.flag) != __lint_false); /* expect: 129 */ + /* expect+1: warning: expression has null effect [129] */ + (void)((s.flag = s.flag) != __lint_false); } void @@ -744,7 +910,8 @@ bool_as_array_index(bool cond) * translates 'arr[ind]' to '*(arr + ind)' in an early stage of * parsing. */ - println(repr[cond]); /* expect: 337 */ + /* expect+1: error: right operand of '+' must not be bool [337] */ + println(repr[cond]); println(cond ? "yes" : "no"); } @@ -761,7 +928,8 @@ do_while_true(void) { do { - } while (__lint_true); /* expect: 161 */ + } while (__lint_true); + /* expect-1: warning: constant in conditional context [161] */ } void @@ -772,8 +940,10 @@ initialization(void) } var[] = { { __lint_false }, { __lint_true }, - { 0 }, /* expect: 107 */ - { 1 }, /* expect: 107 */ + /* expect+1: error: operands of 'init' have incompatible types (_Bool != int) [107] */ + { 0 }, + /* expect+1: error: operands of 'init' have incompatible types (_Bool != int) [107] */ + { 1 }, }; } @@ -793,10 +963,10 @@ typedef struct stdio_file { int ferror(FILE *); FILE stdio_files[3]; FILE *stdio_stdout; -# 797 "d_c99_bool_strict.c" 2 +# 967 "d_c99_bool_strict.c" 2 # 1 "string.h" 1 3 4 int strcmp(const char *, const char *); -# 800 "d_c99_bool_strict.c" 2 +# 970 "d_c99_bool_strict.c" 2 void controlling_expression(FILE *f, const char *a, const char *b) @@ -830,9 +1000,9 @@ controlling_expression(FILE *f, const ch */ /* expect+5: error: controlling expression must be bool, not 'int' [333] */ if (ferror( -# 834 "d_c99_bool_strict.c" 3 4 +# 1004 "d_c99_bool_strict.c" 3 4 &stdio_files[1] -# 836 "d_c99_bool_strict.c" +# 1006 "d_c99_bool_strict.c" )) return; @@ -848,9 +1018,9 @@ controlling_expression(FILE *f, const ch */ /* expect+5: error: controlling expression must be bool, not 'int' [333] */ if (ferror( -# 852 "d_c99_bool_strict.c" 3 4 +# 1022 "d_c99_bool_strict.c" 3 4 stdio_stdout -# 854 "d_c99_bool_strict.c" +# 1024 "d_c99_bool_strict.c" )) return; @@ -863,9 +1033,9 @@ controlling_expression(FILE *f, const ch */ /* expect+5: error: controlling expression must be bool, not 'int' [333] */ if (ferror( -# 867 "d_c99_bool_strict.c" 3 4 +# 1037 "d_c99_bool_strict.c" 3 4 (stdio_stdout) -# 869 "d_c99_bool_strict.c" +# 1039 "d_c99_bool_strict.c" )) return; @@ -889,9 +1059,9 @@ controlling_expression(FILE *f, const ch */ /* expect+5: error: controlling expression must be bool, not 'int' [333] */ if (ferror( -# 893 "d_c99_bool_strict.c" 3 4 +# 1063 "d_c99_bool_strict.c" 3 4 stdio_stdout /* comment */ -# 895 "d_c99_bool_strict.c" +# 1065 "d_c99_bool_strict.c" )) return; } Index: src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp diff -u src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp:1.32 src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp:1.33 --- src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp:1.32 Tue Nov 16 21:01:06 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp Sat Jan 15 14:22:03 2022 @@ -1,177 +1,177 @@ -d_c99_bool_strict.c(127): error: argument #1 expects '_Bool', gets passed 'int' [334] d_c99_bool_strict.c(128): error: argument #1 expects '_Bool', gets passed 'int' [334] -d_c99_bool_strict.c(129): error: argument #1 expects '_Bool', gets passed 'int' [334] -d_c99_bool_strict.c(134): warning: constant in conditional context [161] -d_c99_bool_strict.c(137): warning: constant in conditional context [161] -d_c99_bool_strict.c(140): error: left operand of '?' must be bool, not 'int' [331] -d_c99_bool_strict.c(143): error: left operand of '?' must be bool, not 'int' [331] +d_c99_bool_strict.c(130): error: argument #1 expects '_Bool', gets passed 'int' [334] +d_c99_bool_strict.c(132): error: argument #1 expects '_Bool', gets passed 'int' [334] +d_c99_bool_strict.c(138): warning: constant in conditional context [161] +d_c99_bool_strict.c(142): warning: constant in conditional context [161] d_c99_bool_strict.c(146): error: left operand of '?' must be bool, not 'int' [331] -d_c99_bool_strict.c(149): error: left operand of '?' must be bool, not 'int' [331] -d_c99_bool_strict.c(159): error: left operand of '?' must be bool, not 'int' [331] -d_c99_bool_strict.c(160): error: left operand of '?' must be bool, not 'int' [331] -d_c99_bool_strict.c(163): warning: constant in conditional context [161] -d_c99_bool_strict.c(169): warning: constant in conditional context [161] +d_c99_bool_strict.c(150): error: left operand of '?' must be bool, not 'int' [331] +d_c99_bool_strict.c(154): error: left operand of '?' must be bool, not 'int' [331] +d_c99_bool_strict.c(158): error: left operand of '?' must be bool, not 'int' [331] d_c99_bool_strict.c(169): error: left operand of '?' must be bool, not 'int' [331] -d_c99_bool_strict.c(171): error: integral constant expression expected [55] -d_c99_bool_strict.c(174): error: integral constant expression expected [55] -d_c99_bool_strict.c(177): error: integral constant expression expected [55] -d_c99_bool_strict.c(180): warning: constant in conditional context [161] -d_c99_bool_strict.c(180): error: integral constant expression expected [55] -d_c99_bool_strict.c(181): error: left operand of '||' must be bool, not 'int' [331] -d_c99_bool_strict.c(181): error: right operand of '||' must be bool, not 'int' [332] +d_c99_bool_strict.c(171): error: left operand of '?' must be bool, not 'int' [331] +d_c99_bool_strict.c(175): warning: constant in conditional context [161] d_c99_bool_strict.c(183): warning: constant in conditional context [161] -d_c99_bool_strict.c(183): error: integral constant expression expected [55] -d_c99_bool_strict.c(184): error: left operand of '&&' must be bool, not 'int' [331] -d_c99_bool_strict.c(184): error: right operand of '&&' must be bool, not 'int' [332] -d_c99_bool_strict.c(204): error: operands of '=' have incompatible types (_Bool != unsigned int) [107] -d_c99_bool_strict.c(206): error: operands of '=' have incompatible types (unsigned int != _Bool) [107] -d_c99_bool_strict.c(209): error: operands of '=' have incompatible types (_Bool != unsigned int) [107] -d_c99_bool_strict.c(211): error: operands of '=' have incompatible types (unsigned int != _Bool) [107] -d_c99_bool_strict.c(253): error: return value type mismatch (_Bool) and (int) [211] -d_c99_bool_strict.c(259): error: return value type mismatch (_Bool) and (int) [211] -d_c99_bool_strict.c(265): error: return value type mismatch (_Bool) and (int) [211] -d_c99_bool_strict.c(271): error: return value type mismatch (_Bool) and (pointer) [211] -d_c99_bool_strict.c(269): warning: argument 'p' unused in function 'strict_bool_conversion_return_pointer' [231] -d_c99_bool_strict.c(277): error: return value type mismatch (char) and (_Bool) [211] -d_c99_bool_strict.c(283): error: return value type mismatch (char) and (_Bool) [211] -d_c99_bool_strict.c(301): error: argument #2 expects 'int', gets passed '_Bool' [334] -d_c99_bool_strict.c(301): error: argument #3 expects 'pointer', gets passed '_Bool' [334] -d_c99_bool_strict.c(304): error: argument #1 expects '_Bool', gets passed 'int' [334] -d_c99_bool_strict.c(304): warning: illegal combination of pointer (pointer to const char) and integer (int), arg #3 [154] -d_c99_bool_strict.c(307): error: argument #1 expects '_Bool', gets passed 'pointer' [334] -d_c99_bool_strict.c(307): warning: illegal combination of integer (int) and pointer (pointer to const char), arg #2 [154] -d_c99_bool_strict.c(319): error: argument #1 expects '_Bool', gets passed 'int' [334] -d_c99_bool_strict.c(320): error: argument #1 expects '_Bool', gets passed 'int' [334] -d_c99_bool_strict.c(321): error: argument #1 expects '_Bool', gets passed 'int' [334] -d_c99_bool_strict.c(330): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(332): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(336): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(338): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(340): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(341): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(352): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(353): error: operands of '=' have incompatible types (unsigned int != _Bool) [107] -d_c99_bool_strict.c(354): error: operands of '=' have incompatible types (double != _Bool) [107] -d_c99_bool_strict.c(355): error: operands of '=' have incompatible types (pointer != _Bool) [107] -d_c99_bool_strict.c(345): warning: argument 'b' unused in function 'strict_bool_conversion_from_bool_to_scalar' [231] -d_c99_bool_strict.c(367): warning: constant in conditional context [161] -d_c99_bool_strict.c(368): warning: statement not reached [193] -d_c99_bool_strict.c(370): warning: constant in conditional context [161] -d_c99_bool_strict.c(376): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(377): warning: statement not reached [193] -d_c99_bool_strict.c(379): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(382): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(386): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(392): error: controlling expression must be bool, not 'double' [333] -d_c99_bool_strict.c(398): error: controlling expression must be bool, not 'pointer' [333] -d_c99_bool_strict.c(419): warning: constant in conditional context [161] -d_c99_bool_strict.c(419): warning: constant argument to '!' [239] -d_c99_bool_strict.c(420): warning: constant in conditional context [161] -d_c99_bool_strict.c(420): warning: constant argument to '!' [239] -d_c99_bool_strict.c(424): error: operand of '!' must be bool, not 'int' [330] -d_c99_bool_strict.c(425): error: operand of '!' must be bool, not 'int' [330] -d_c99_bool_strict.c(426): error: operand of '!' must be bool, not 'int' [330] -d_c99_bool_strict.c(427): error: operand of '!' must be bool, not 'int' [330] -d_c99_bool_strict.c(482): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(488): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(504): error: operand of '!' must be bool, not 'int' [330] -d_c99_bool_strict.c(505): error: left operand of '&&' must be bool, not 'int' [331] -d_c99_bool_strict.c(505): error: right operand of '&&' must be bool, not 'int' [332] -d_c99_bool_strict.c(506): error: left operand of '||' must be bool, not 'int' [331] -d_c99_bool_strict.c(506): error: right operand of '||' must be bool, not 'int' [332] -d_c99_bool_strict.c(508): error: right operand of '&&' must be bool, not 'int' [332] -d_c99_bool_strict.c(509): error: left operand of '&&' must be bool, not 'int' [331] -d_c99_bool_strict.c(510): error: right operand of '||' must be bool, not 'int' [332] -d_c99_bool_strict.c(511): error: left operand of '||' must be bool, not 'int' [331] -d_c99_bool_strict.c(520): error: operand of '~' must not be bool [335] -d_c99_bool_strict.c(521): error: operand of '++x' must not be bool [335] -d_c99_bool_strict.c(522): error: operand of '--x' must not be bool [335] -d_c99_bool_strict.c(523): error: operand of 'x++' must not be bool [335] -d_c99_bool_strict.c(524): error: operand of 'x--' must not be bool [335] -d_c99_bool_strict.c(525): error: operand of '+' must not be bool [335] -d_c99_bool_strict.c(526): error: operand of '-' must not be bool [335] -d_c99_bool_strict.c(532): error: left operand of '*' must not be bool [336] -d_c99_bool_strict.c(532): error: right operand of '*' must not be bool [337] -d_c99_bool_strict.c(533): error: left operand of '/' must not be bool [336] -d_c99_bool_strict.c(533): error: right operand of '/' must not be bool [337] -d_c99_bool_strict.c(534): error: left operand of '%' must not be bool [336] -d_c99_bool_strict.c(534): error: right operand of '%' must not be bool [337] -d_c99_bool_strict.c(535): error: left operand of '+' must not be bool [336] -d_c99_bool_strict.c(535): error: right operand of '+' must not be bool [337] -d_c99_bool_strict.c(536): error: left operand of '-' must not be bool [336] -d_c99_bool_strict.c(536): error: right operand of '-' must not be bool [337] -d_c99_bool_strict.c(537): error: left operand of '<<' must not be bool [336] -d_c99_bool_strict.c(537): error: right operand of '<<' must not be bool [337] -d_c99_bool_strict.c(538): error: left operand of '>>' must not be bool [336] -d_c99_bool_strict.c(538): error: right operand of '>>' must not be bool [337] -d_c99_bool_strict.c(540): error: left operand of '<' must not be bool [336] -d_c99_bool_strict.c(540): error: right operand of '<' must not be bool [337] -d_c99_bool_strict.c(541): error: left operand of '<=' must not be bool [336] -d_c99_bool_strict.c(541): error: right operand of '<=' must not be bool [337] -d_c99_bool_strict.c(542): error: left operand of '>' must not be bool [336] -d_c99_bool_strict.c(542): error: right operand of '>' must not be bool [337] -d_c99_bool_strict.c(543): error: left operand of '>=' must not be bool [336] -d_c99_bool_strict.c(543): error: right operand of '>=' must not be bool [337] -d_c99_bool_strict.c(555): error: left operand of '*=' must not be bool [336] -d_c99_bool_strict.c(555): error: right operand of '*=' must not be bool [337] -d_c99_bool_strict.c(556): error: left operand of '/=' must not be bool [336] -d_c99_bool_strict.c(556): error: right operand of '/=' must not be bool [337] -d_c99_bool_strict.c(557): error: left operand of '%=' must not be bool [336] -d_c99_bool_strict.c(557): error: right operand of '%=' must not be bool [337] -d_c99_bool_strict.c(558): error: left operand of '+=' must not be bool [336] -d_c99_bool_strict.c(558): error: right operand of '+=' must not be bool [337] -d_c99_bool_strict.c(559): error: left operand of '-=' must not be bool [336] -d_c99_bool_strict.c(559): error: right operand of '-=' must not be bool [337] -d_c99_bool_strict.c(560): error: left operand of '<<=' must not be bool [336] -d_c99_bool_strict.c(560): error: right operand of '<<=' must not be bool [337] -d_c99_bool_strict.c(561): error: left operand of '>>=' must not be bool [336] -d_c99_bool_strict.c(561): error: right operand of '>>=' must not be bool [337] -d_c99_bool_strict.c(567): error: left operand of '*' must not be bool [336] -d_c99_bool_strict.c(568): error: right operand of '*' must not be bool [337] -d_c99_bool_strict.c(569): error: left operand of '/' must not be bool [336] -d_c99_bool_strict.c(570): error: right operand of '/' must not be bool [337] -d_c99_bool_strict.c(571): error: left operand of '%' must not be bool [336] -d_c99_bool_strict.c(572): error: right operand of '%' must not be bool [337] -d_c99_bool_strict.c(573): error: left operand of '+' must not be bool [336] -d_c99_bool_strict.c(574): error: right operand of '+' must not be bool [337] -d_c99_bool_strict.c(575): error: left operand of '-' must not be bool [336] -d_c99_bool_strict.c(576): error: right operand of '-' must not be bool [337] -d_c99_bool_strict.c(577): error: left operand of '<<' must not be bool [336] -d_c99_bool_strict.c(578): error: right operand of '<<' must not be bool [337] -d_c99_bool_strict.c(579): error: left operand of '>>' must not be bool [336] -d_c99_bool_strict.c(580): error: right operand of '>>' must not be bool [337] -d_c99_bool_strict.c(582): error: operands of ':' have incompatible types (_Bool != unsigned int) [107] -d_c99_bool_strict.c(583): error: operands of ':' have incompatible types (unsigned int != _Bool) [107] -d_c99_bool_strict.c(589): warning: expression has null effect [129] -d_c99_bool_strict.c(590): warning: expression has null effect [129] -d_c99_bool_strict.c(603): error: operands of 'init' have incompatible types (char != _Bool) [107] -d_c99_bool_strict.c(604): error: operands of 'init' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(605): error: operands of 'init' have incompatible types (double != _Bool) [107] -d_c99_bool_strict.c(606): error: operands of 'init' have incompatible types (pointer != _Bool) [107] -d_c99_bool_strict.c(623): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(624): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(625): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(626): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(627): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(628): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(629): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(630): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(631): error: operands of '=' have incompatible types (int != _Bool) [107] -d_c99_bool_strict.c(669): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(677): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(684): error: operands of '=' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(659): warning: argument 'flags' unused in function 'strict_bool_bitwise_and_enum' [231] -d_c99_bool_strict.c(723): error: operands of '==' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(183): error: left operand of '?' must be bool, not 'int' [331] +d_c99_bool_strict.c(186): error: integral constant expression expected [55] +d_c99_bool_strict.c(190): error: integral constant expression expected [55] +d_c99_bool_strict.c(194): error: integral constant expression expected [55] +d_c99_bool_strict.c(199): warning: constant in conditional context [161] +d_c99_bool_strict.c(199): error: integral constant expression expected [55] +d_c99_bool_strict.c(202): error: left operand of '||' must be bool, not 'int' [331] +d_c99_bool_strict.c(202): error: right operand of '||' must be bool, not 'int' [332] +d_c99_bool_strict.c(206): warning: constant in conditional context [161] +d_c99_bool_strict.c(206): error: integral constant expression expected [55] +d_c99_bool_strict.c(209): error: left operand of '&&' must be bool, not 'int' [331] +d_c99_bool_strict.c(209): error: right operand of '&&' must be bool, not 'int' [332] +d_c99_bool_strict.c(230): error: operands of '=' have incompatible types (_Bool != unsigned int) [107] +d_c99_bool_strict.c(233): error: operands of '=' have incompatible types (unsigned int != _Bool) [107] +d_c99_bool_strict.c(237): error: operands of '=' have incompatible types (_Bool != unsigned int) [107] +d_c99_bool_strict.c(240): error: operands of '=' have incompatible types (unsigned int != _Bool) [107] +d_c99_bool_strict.c(283): error: return value type mismatch (_Bool) and (int) [211] +d_c99_bool_strict.c(290): error: return value type mismatch (_Bool) and (int) [211] +d_c99_bool_strict.c(297): error: return value type mismatch (_Bool) and (int) [211] +d_c99_bool_strict.c(305): error: return value type mismatch (_Bool) and (pointer) [211] +d_c99_bool_strict.c(302): warning: argument 'p' unused in function 'strict_bool_conversion_return_pointer' [231] +d_c99_bool_strict.c(312): error: return value type mismatch (char) and (_Bool) [211] +d_c99_bool_strict.c(319): error: return value type mismatch (char) and (_Bool) [211] +d_c99_bool_strict.c(339): error: argument #2 expects 'int', gets passed '_Bool' [334] +d_c99_bool_strict.c(339): error: argument #3 expects 'pointer', gets passed '_Bool' [334] +d_c99_bool_strict.c(344): error: argument #1 expects '_Bool', gets passed 'int' [334] +d_c99_bool_strict.c(344): warning: illegal combination of pointer (pointer to const char) and integer (int), arg #3 [154] +d_c99_bool_strict.c(349): error: argument #1 expects '_Bool', gets passed 'pointer' [334] +d_c99_bool_strict.c(349): warning: illegal combination of integer (int) and pointer (pointer to const char), arg #2 [154] +d_c99_bool_strict.c(363): error: argument #1 expects '_Bool', gets passed 'int' [334] +d_c99_bool_strict.c(365): error: argument #1 expects '_Bool', gets passed 'int' [334] +d_c99_bool_strict.c(367): error: argument #1 expects '_Bool', gets passed 'int' [334] +d_c99_bool_strict.c(377): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(380): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(385): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(388): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(391): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(393): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(406): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(408): error: operands of '=' have incompatible types (unsigned int != _Bool) [107] +d_c99_bool_strict.c(410): error: operands of '=' have incompatible types (double != _Bool) [107] +d_c99_bool_strict.c(412): error: operands of '=' have incompatible types (pointer != _Bool) [107] +d_c99_bool_strict.c(398): warning: argument 'b' unused in function 'strict_bool_conversion_from_bool_to_scalar' [231] +d_c99_bool_strict.c(425): warning: constant in conditional context [161] +d_c99_bool_strict.c(426): warning: statement not reached [193] +d_c99_bool_strict.c(430): warning: constant in conditional context [161] +d_c99_bool_strict.c(437): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(438): warning: statement not reached [193] +d_c99_bool_strict.c(442): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(446): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(451): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(458): error: controlling expression must be bool, not 'double' [333] +d_c99_bool_strict.c(465): error: controlling expression must be bool, not 'pointer' [333] +d_c99_bool_strict.c(488): warning: constant in conditional context [161] +d_c99_bool_strict.c(488): warning: constant argument to '!' [239] +d_c99_bool_strict.c(491): warning: constant in conditional context [161] +d_c99_bool_strict.c(491): warning: constant argument to '!' [239] +d_c99_bool_strict.c(496): error: operand of '!' must be bool, not 'int' [330] +d_c99_bool_strict.c(498): error: operand of '!' must be bool, not 'int' [330] +d_c99_bool_strict.c(500): error: operand of '!' must be bool, not 'int' [330] +d_c99_bool_strict.c(502): error: operand of '!' must be bool, not 'int' [330] +d_c99_bool_strict.c(558): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(565): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(582): error: operand of '!' must be bool, not 'int' [330] +d_c99_bool_strict.c(585): error: left operand of '&&' must be bool, not 'int' [331] +d_c99_bool_strict.c(585): error: right operand of '&&' must be bool, not 'int' [332] +d_c99_bool_strict.c(588): error: left operand of '||' must be bool, not 'int' [331] +d_c99_bool_strict.c(588): error: right operand of '||' must be bool, not 'int' [332] +d_c99_bool_strict.c(591): error: right operand of '&&' must be bool, not 'int' [332] +d_c99_bool_strict.c(593): error: left operand of '&&' must be bool, not 'int' [331] +d_c99_bool_strict.c(595): error: right operand of '||' must be bool, not 'int' [332] +d_c99_bool_strict.c(597): error: left operand of '||' must be bool, not 'int' [331] +d_c99_bool_strict.c(607): error: operand of '~' must not be bool [335] +d_c99_bool_strict.c(609): error: operand of '++x' must not be bool [335] +d_c99_bool_strict.c(611): error: operand of '--x' must not be bool [335] +d_c99_bool_strict.c(613): error: operand of 'x++' must not be bool [335] +d_c99_bool_strict.c(615): error: operand of 'x--' must not be bool [335] +d_c99_bool_strict.c(617): error: operand of '+' must not be bool [335] +d_c99_bool_strict.c(619): error: operand of '-' must not be bool [335] +d_c99_bool_strict.c(627): error: left operand of '*' must not be bool [336] +d_c99_bool_strict.c(627): error: right operand of '*' must not be bool [337] +d_c99_bool_strict.c(630): error: left operand of '/' must not be bool [336] +d_c99_bool_strict.c(630): error: right operand of '/' must not be bool [337] +d_c99_bool_strict.c(633): error: left operand of '%' must not be bool [336] +d_c99_bool_strict.c(633): error: right operand of '%' must not be bool [337] +d_c99_bool_strict.c(636): error: left operand of '+' must not be bool [336] +d_c99_bool_strict.c(636): error: right operand of '+' must not be bool [337] +d_c99_bool_strict.c(639): error: left operand of '-' must not be bool [336] +d_c99_bool_strict.c(639): error: right operand of '-' must not be bool [337] +d_c99_bool_strict.c(642): error: left operand of '<<' must not be bool [336] +d_c99_bool_strict.c(642): error: right operand of '<<' must not be bool [337] +d_c99_bool_strict.c(645): error: left operand of '>>' must not be bool [336] +d_c99_bool_strict.c(645): error: right operand of '>>' must not be bool [337] +d_c99_bool_strict.c(649): error: left operand of '<' must not be bool [336] +d_c99_bool_strict.c(649): error: right operand of '<' must not be bool [337] +d_c99_bool_strict.c(652): error: left operand of '<=' must not be bool [336] +d_c99_bool_strict.c(652): error: right operand of '<=' must not be bool [337] +d_c99_bool_strict.c(655): error: left operand of '>' must not be bool [336] +d_c99_bool_strict.c(655): error: right operand of '>' must not be bool [337] +d_c99_bool_strict.c(658): error: left operand of '>=' must not be bool [336] +d_c99_bool_strict.c(658): error: right operand of '>=' must not be bool [337] +d_c99_bool_strict.c(672): error: left operand of '*=' must not be bool [336] +d_c99_bool_strict.c(672): error: right operand of '*=' must not be bool [337] +d_c99_bool_strict.c(675): error: left operand of '/=' must not be bool [336] +d_c99_bool_strict.c(675): error: right operand of '/=' must not be bool [337] +d_c99_bool_strict.c(678): error: left operand of '%=' must not be bool [336] +d_c99_bool_strict.c(678): error: right operand of '%=' must not be bool [337] +d_c99_bool_strict.c(681): error: left operand of '+=' must not be bool [336] +d_c99_bool_strict.c(681): error: right operand of '+=' must not be bool [337] +d_c99_bool_strict.c(684): error: left operand of '-=' must not be bool [336] +d_c99_bool_strict.c(684): error: right operand of '-=' must not be bool [337] +d_c99_bool_strict.c(687): error: left operand of '<<=' must not be bool [336] +d_c99_bool_strict.c(687): error: right operand of '<<=' must not be bool [337] +d_c99_bool_strict.c(690): error: left operand of '>>=' must not be bool [336] +d_c99_bool_strict.c(690): error: right operand of '>>=' must not be bool [337] +d_c99_bool_strict.c(697): error: left operand of '*' must not be bool [336] +d_c99_bool_strict.c(699): error: right operand of '*' must not be bool [337] +d_c99_bool_strict.c(701): error: left operand of '/' must not be bool [336] +d_c99_bool_strict.c(703): error: right operand of '/' must not be bool [337] +d_c99_bool_strict.c(705): error: left operand of '%' must not be bool [336] +d_c99_bool_strict.c(707): error: right operand of '%' must not be bool [337] +d_c99_bool_strict.c(709): error: left operand of '+' must not be bool [336] +d_c99_bool_strict.c(711): error: right operand of '+' must not be bool [337] +d_c99_bool_strict.c(713): error: left operand of '-' must not be bool [336] +d_c99_bool_strict.c(715): error: right operand of '-' must not be bool [337] +d_c99_bool_strict.c(717): error: left operand of '<<' must not be bool [336] +d_c99_bool_strict.c(719): error: right operand of '<<' must not be bool [337] +d_c99_bool_strict.c(721): error: left operand of '>>' must not be bool [336] +d_c99_bool_strict.c(723): error: right operand of '>>' must not be bool [337] +d_c99_bool_strict.c(726): error: operands of ':' have incompatible types (_Bool != unsigned int) [107] +d_c99_bool_strict.c(728): error: operands of ':' have incompatible types (unsigned int != _Bool) [107] d_c99_bool_strict.c(735): warning: expression has null effect [129] -d_c99_bool_strict.c(747): error: right operand of '+' must not be bool [337] -d_c99_bool_strict.c(764): warning: constant in conditional context [161] -d_c99_bool_strict.c(775): error: operands of 'init' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(776): error: operands of 'init' have incompatible types (_Bool != int) [107] -d_c99_bool_strict.c(805): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(808): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(811): error: operand of '!' must be bool, not 'int' [330] -d_c99_bool_strict.c(814): error: operand of '!' must be bool, not 'int' [330] -d_c99_bool_strict.c(836): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(854): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(869): error: controlling expression must be bool, not 'int' [333] -d_c99_bool_strict.c(895): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(737): warning: expression has null effect [129] +d_c99_bool_strict.c(751): error: operands of 'init' have incompatible types (char != _Bool) [107] +d_c99_bool_strict.c(753): error: operands of 'init' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(755): error: operands of 'init' have incompatible types (double != _Bool) [107] +d_c99_bool_strict.c(757): error: operands of 'init' have incompatible types (pointer != _Bool) [107] +d_c99_bool_strict.c(775): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(777): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(779): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(781): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(783): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(785): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(787): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(789): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(791): error: operands of '=' have incompatible types (int != _Bool) [107] +d_c99_bool_strict.c(831): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(840): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(848): error: operands of '=' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(820): warning: argument 'flags' unused in function 'strict_bool_bitwise_and_enum' [231] +d_c99_bool_strict.c(888): error: operands of '==' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(901): warning: expression has null effect [129] +d_c99_bool_strict.c(914): error: right operand of '+' must not be bool [337] +d_c99_bool_strict.c(931): warning: constant in conditional context [161] +d_c99_bool_strict.c(944): error: operands of 'init' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(946): error: operands of 'init' have incompatible types (_Bool != int) [107] +d_c99_bool_strict.c(975): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(978): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(981): error: operand of '!' must be bool, not 'int' [330] +d_c99_bool_strict.c(984): error: operand of '!' must be bool, not 'int' [330] +d_c99_bool_strict.c(1006): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(1024): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(1039): error: controlling expression must be bool, not 'int' [333] +d_c99_bool_strict.c(1065): error: controlling expression must be bool, not 'int' [333] Index: src/tests/usr.bin/xlint/lint1/d_c99_complex_split.exp diff -u src/tests/usr.bin/xlint/lint1/d_c99_complex_split.exp:1.2 src/tests/usr.bin/xlint/lint1/d_c99_complex_split.exp:1.3 --- src/tests/usr.bin/xlint/lint1/d_c99_complex_split.exp:1.2 Fri Apr 9 21:42:12 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_complex_split.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_c99_complex_split.c(82): error: operands of '|' have incompatible types (double _Complex != double _Complex) [107] +d_c99_complex_split.c(83): error: operands of '|' have incompatible types (double _Complex != double _Complex) [107] Index: src/tests/usr.bin/xlint/lint1/d_constant_conv1.exp diff -u src/tests/usr.bin/xlint/lint1/d_constant_conv1.exp:1.2 src/tests/usr.bin/xlint/lint1/d_constant_conv1.exp:1.3 --- src/tests/usr.bin/xlint/lint1/d_constant_conv1.exp:1.2 Sun Jan 31 14:39:31 2021 +++ src/tests/usr.bin/xlint/lint1/d_constant_conv1.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_constant_conv1.c(11): warning: conversion of negative constant to unsigned type, arg #1 [296] +d_constant_conv1.c(12): warning: conversion of negative constant to unsigned type, arg #1 [296] Index: src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.exp diff -u src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.exp:1.2 src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.exp:1.3 --- src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.exp:1.2 Sun Jun 20 11:42:26 2021 +++ src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.exp Sat Jan 15 14:22:03 2022 @@ -1,3 +1,3 @@ -d_gcc_compound_statements1.c(23): error: syntax error 'return outside function' [249] -d_gcc_compound_statements1.c(24): error: cannot initialize 'int' from 'void' [185] -d_gcc_compound_statements1.c(34): error: type 'int' does not have member 'e' [101] +d_gcc_compound_statements1.c(24): error: syntax error 'return outside function' [249] +d_gcc_compound_statements1.c(25): error: cannot initialize 'int' from 'void' [185] +d_gcc_compound_statements1.c(37): error: type 'int' does not have member 'e' [101] Index: src/tests/usr.bin/xlint/lint1/d_pr_22119.c diff -u src/tests/usr.bin/xlint/lint1/d_pr_22119.c:1.2 src/tests/usr.bin/xlint/lint1/d_pr_22119.c:1.3 --- src/tests/usr.bin/xlint/lint1/d_pr_22119.c:1.2 Fri Mar 26 23:17:33 2021 +++ src/tests/usr.bin/xlint/lint1/d_pr_22119.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_pr_22119.c,v 1.2 2021/03/26 23:17:33 rillig Exp $ */ +/* $NetBSD: d_pr_22119.c,v 1.3 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_pr_22119.c" /* @@ -13,6 +13,7 @@ func1(void) { void (*f1)(void); - f1 = (void (*)(void))p; /* expect: 'p' undefined [99] */ + /* expect+1: error: 'p' undefined [99] */ + f1 = (void (*)(void))p; f1 = (void *()(void))p; /* crash before 2021-02-28 */ } Index: src/tests/usr.bin/xlint/lint1/d_return_type.exp diff -u src/tests/usr.bin/xlint/lint1/d_return_type.exp:1.2 src/tests/usr.bin/xlint/lint1/d_return_type.exp:1.3 --- src/tests/usr.bin/xlint/lint1/d_return_type.exp:1.2 Sun Jan 31 14:39:31 2021 +++ src/tests/usr.bin/xlint/lint1/d_return_type.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_return_type.c(15): warning: return value type mismatch (enum A) and (enum B) [211] +d_return_type.c(16): warning: return value type mismatch (enum A) and (enum B) [211] Index: src/tests/usr.bin/xlint/lint1/d_c99_init.c diff -u src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.39 src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.40 --- src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.39 Tue Dec 28 22:54:08 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_init.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_c99_init.c,v 1.39 2021/12/28 22:54:08 rillig Exp $ */ +/* $NetBSD: d_c99_init.c,v 1.40 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_c99_init.c" /* @@ -21,7 +21,8 @@ typedef struct any { int scalar_without_braces = 3; int scalar_with_optional_braces = { 3 }; int scalar_with_too_many_braces = {{ 3 }}; -int scalar_with_too_many_initializers = { 3, 5 }; /* expect: 174 */ +/* expect+1: error: too many initializers [174] */ +int scalar_with_too_many_initializers = { 3, 5 }; // See initialization_expr, 'handing over to INIT'. @@ -61,7 +62,8 @@ initialization_by_redundantly_braced_str void initialization_with_too_many_braces(any arg) { - any local = { arg }; /* expect: 185 */ + /* expect+1: error: cannot initialize 'pointer to const void' from 'struct any' [185] */ + any local = { arg }; use(&arg); } @@ -78,7 +80,8 @@ int array_with_fixed_size[3] = { 111, 222, 333, - 444, /* expect: too many array initializers */ + /* expect+1: error: too many array initializers, expected 3 [173] */ + 444, }; // See update_type_of_array_of_unknown_size. @@ -136,13 +139,15 @@ struct point point_with_designators = { struct point point_with_mixed_designators = { .x = 3, 4, - 5, /* expect: too many struct/union initializers */ + /* expect+1: error: too many struct/union initializers [172] */ + 5, .x = 3, }; int array_with_designator[] = { 111, - .member = 222, /* expect: 249 */ + /* expect+1: error: syntax error 'designator '.member' is only for struct/union' [249] */ + .member = 222, 333, }; @@ -386,7 +391,8 @@ ensure_array_type_is_not_modified_during switch (4) { case sizeof(array_of_unknown_size): - case 0: /* expect: duplicate case in switch: 0 */ + /* expect+1: error: duplicate case in switch: 0 [199] */ + case 0: case 3: case 4: case 12: @@ -398,21 +404,24 @@ ensure_array_type_is_not_modified_during } struct point unknown_member_name_beginning = { - .r = 5, /* expect: does not have member 'r' */ + /* expect+1: error: type 'struct point' does not have member 'r' [101] */ + .r = 5, .x = 4, .y = 3, }; struct point unknown_member_name_middle = { .x = 4, - .r = 5, /* expect: does not have member 'r' */ + /* expect+1: error: type 'struct point' does not have member 'r' [101] */ + .r = 5, .y = 3, }; struct point unknown_member_name_end = { .x = 4, .y = 3, - .r = 5, /* expect: does not have member 'r' */ + /* expect+1: error: type 'struct point' does not have member 'r' [101] */ + .r = 5, }; union value { @@ -421,17 +430,20 @@ union value { }; union value unknown_union_member_name_first = { - .unknown_value = 4, /* expect: does not have member */ + /* expect+1: error: type 'union value' does not have member 'unknown_value' [101] */ + .unknown_value = 4, .int_value = 3, }; union value unknown_union_member_name_second = { .int_value = 3, - .unknown_value = 4, /* expect: does not have member */ + /* expect+1: error: type 'union value' does not have member 'unknown_value' [101] */ + .unknown_value = 4, }; struct point subscript_designator_on_struct = { - [0] = 3, /* expect: only for arrays */ + /* expect+1: error: syntax error 'designator '[...]' is only for arrays' [249] */ + [0] = 3, }; struct point unknown_member_on_struct = { @@ -461,11 +473,13 @@ union { }; int designator_for_scalar = { - .value = 3, /* expect: scalar type cannot use designator */ + /* expect+1: error: syntax error 'scalar type cannot use designator' [249] */ + .value = 3, }; struct point member_designator_for_scalar_in_struct = { - { .x = 3 }, /* expect: scalar type cannot use designator */ + /* expect+1: error: syntax error 'scalar type cannot use designator' [249] */ + { .x = 3 }, }; struct point subscript_designator_for_scalar_in_struct = { /* expect+1: error: syntax error 'designator '[...]' is only for arrays' [249] */ Index: src/tests/usr.bin/xlint/lint1/d_c99_init.exp diff -u src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.29 src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.30 --- src/tests/usr.bin/xlint/lint1/d_c99_init.exp:1.29 Tue Dec 28 22:54:08 2021 +++ src/tests/usr.bin/xlint/lint1/d_c99_init.exp Sat Jan 15 14:22:03 2022 @@ -1,29 +1,29 @@ -d_c99_init.c(24): error: too many initializers [174] -d_c99_init.c(64): error: cannot initialize 'pointer to const void' from 'struct any' [185] -d_c99_init.c(81): error: too many array initializers, expected 3 [173] -d_c99_init.c(139): error: too many struct/union initializers [172] -d_c99_init.c(145): error: syntax error 'designator '.member' is only for struct/union' [249] -d_c99_init.c(221): error: array subscript cannot be > 2: 3 [168] -d_c99_init.c(223): error: array subscript cannot be > 4: 5 [168] -d_c99_init.c(225): error: array subscript cannot be > 1: 2 [168] -d_c99_init.c(234): error: too many struct/union initializers [172] -d_c99_init.c(240): warning: illegal combination of integer (char) and pointer (pointer to char) [183] -d_c99_init.c(334): error: negative array dimension (-8) [20] -d_c99_init.c(336): error: negative array dimension (-12) [20] -d_c99_init.c(389): error: duplicate case in switch: 0 [199] -d_c99_init.c(397): error: negative array dimension (-12) [20] -d_c99_init.c(401): error: type 'struct point' does not have member 'r' [101] +d_c99_init.c(25): error: too many initializers [174] +d_c99_init.c(66): error: cannot initialize 'pointer to const void' from 'struct any' [185] +d_c99_init.c(84): error: too many array initializers, expected 3 [173] +d_c99_init.c(143): error: too many struct/union initializers [172] +d_c99_init.c(150): error: syntax error 'designator '.member' is only for struct/union' [249] +d_c99_init.c(226): error: array subscript cannot be > 2: 3 [168] +d_c99_init.c(228): error: array subscript cannot be > 4: 5 [168] +d_c99_init.c(230): error: array subscript cannot be > 1: 2 [168] +d_c99_init.c(239): error: too many struct/union initializers [172] +d_c99_init.c(245): warning: illegal combination of integer (char) and pointer (pointer to char) [183] +d_c99_init.c(339): error: negative array dimension (-8) [20] +d_c99_init.c(341): error: negative array dimension (-12) [20] +d_c99_init.c(395): error: duplicate case in switch: 0 [199] +d_c99_init.c(403): error: negative array dimension (-12) [20] d_c99_init.c(408): error: type 'struct point' does not have member 'r' [101] -d_c99_init.c(415): error: type 'struct point' does not have member 'r' [101] -d_c99_init.c(424): error: type 'union value' does not have member 'unknown_value' [101] -d_c99_init.c(430): error: type 'union value' does not have member 'unknown_value' [101] -d_c99_init.c(434): error: syntax error 'designator '[...]' is only for arrays' [249] -d_c99_init.c(439): error: type 'struct point' does not have member 'member' [101] -d_c99_init.c(444): error: syntax error 'scalar type cannot use designator' [249] -d_c99_init.c(451): warning: structure has no named members [65] -d_c99_init.c(451): error: cannot initialize struct/union with no named member [179] -d_c99_init.c(459): warning: union has no named members [65] -d_c99_init.c(459): error: cannot initialize struct/union with no named member [179] -d_c99_init.c(464): error: syntax error 'scalar type cannot use designator' [249] -d_c99_init.c(468): error: syntax error 'scalar type cannot use designator' [249] -d_c99_init.c(472): error: syntax error 'designator '[...]' is only for arrays' [249] +d_c99_init.c(416): error: type 'struct point' does not have member 'r' [101] +d_c99_init.c(424): error: type 'struct point' does not have member 'r' [101] +d_c99_init.c(434): error: type 'union value' does not have member 'unknown_value' [101] +d_c99_init.c(441): error: type 'union value' does not have member 'unknown_value' [101] +d_c99_init.c(446): error: syntax error 'designator '[...]' is only for arrays' [249] +d_c99_init.c(451): error: type 'struct point' does not have member 'member' [101] +d_c99_init.c(456): error: syntax error 'scalar type cannot use designator' [249] +d_c99_init.c(463): warning: structure has no named members [65] +d_c99_init.c(463): error: cannot initialize struct/union with no named member [179] +d_c99_init.c(471): warning: union has no named members [65] +d_c99_init.c(471): error: cannot initialize struct/union with no named member [179] +d_c99_init.c(477): error: syntax error 'scalar type cannot use designator' [249] +d_c99_init.c(482): error: syntax error 'scalar type cannot use designator' [249] +d_c99_init.c(486): error: syntax error 'designator '[...]' is only for arrays' [249] Index: src/tests/usr.bin/xlint/lint1/d_constant_conv1.c diff -u src/tests/usr.bin/xlint/lint1/d_constant_conv1.c:1.3 src/tests/usr.bin/xlint/lint1/d_constant_conv1.c:1.4 --- src/tests/usr.bin/xlint/lint1/d_constant_conv1.c:1.3 Sun Feb 21 09:07:58 2021 +++ src/tests/usr.bin/xlint/lint1/d_constant_conv1.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_constant_conv1.c,v 1.3 2021/02/21 09:07:58 rillig Exp $ */ +/* $NetBSD: d_constant_conv1.c,v 1.4 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_constant_conv1.c" /* Flag information-losing constant conversion in argument lists */ @@ -8,5 +8,6 @@ int f(unsigned int); void should_fail() { - f(-1); /* expect: 296 */ + /* expect+1: warning: conversion of negative constant to unsigned type, arg #1 [296] */ + f(-1); } Index: src/tests/usr.bin/xlint/lint1/d_constant_conv2.c diff -u src/tests/usr.bin/xlint/lint1/d_constant_conv2.c:1.3 src/tests/usr.bin/xlint/lint1/d_constant_conv2.c:1.4 --- src/tests/usr.bin/xlint/lint1/d_constant_conv2.c:1.3 Sun Feb 21 09:07:58 2021 +++ src/tests/usr.bin/xlint/lint1/d_constant_conv2.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_constant_conv2.c,v 1.3 2021/02/21 09:07:58 rillig Exp $ */ +/* $NetBSD: d_constant_conv2.c,v 1.4 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_constant_conv2.c" /* Flag information-losing constant conversion in argument lists */ @@ -8,5 +8,6 @@ int f(unsigned int); void should_fail() { - f(2.1); /* expect: 259 */ + /* expect+1: warning: argument #1 is converted from 'double' to 'unsigned int' due to prototype [259] */ + f(2.1); } Index: src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.c diff -u src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.c:1.3 src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.c:1.4 --- src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.c:1.3 Mon Apr 5 01:35:34 2021 +++ src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.c Sat Jan 15 14:22:03 2022 @@ -7,9 +7,15 @@ void func(int a, int b, int c); -void func(num, ptr, dbl, def) /* expect: 231 *//* expect: 231 *//* expect: 231 *//* expect: 231 */ +/* expect+4: warning: argument 'num' unused in function 'func' [231] */ +/* expect+3: warning: argument 'ptr' unused in function 'func' [231] */ +/* expect+2: warning: argument 'dbl' unused in function 'func' [231] */ +/* expect+1: warning: argument 'def' unused in function 'func' [231] */ +void func(num, ptr, dbl, def) int num; char *ptr; double dbl; -{ /* expect: 32 *//* expect: 51 */ +{ + /* expect-1: warning: argument type defaults to 'int': def [32] */ + /* expect-2: error: parameter mismatch: 3 declared, 4 defined [51] */ } Index: src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.exp diff -u src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.exp:1.3 src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.exp:1.4 --- src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.exp:1.3 Fri Apr 9 20:12:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_decl_old_style_arguments.exp Sat Jan 15 14:22:03 2022 @@ -1,6 +1,6 @@ -d_decl_old_style_arguments.c(14): warning: argument type defaults to 'int': def [32] -d_decl_old_style_arguments.c(14): error: parameter mismatch: 3 declared, 4 defined [51] -d_decl_old_style_arguments.c(10): warning: argument 'num' unused in function 'func' [231] -d_decl_old_style_arguments.c(10): warning: argument 'ptr' unused in function 'func' [231] -d_decl_old_style_arguments.c(10): warning: argument 'dbl' unused in function 'func' [231] -d_decl_old_style_arguments.c(10): warning: argument 'def' unused in function 'func' [231] +d_decl_old_style_arguments.c(18): warning: argument type defaults to 'int': def [32] +d_decl_old_style_arguments.c(18): error: parameter mismatch: 3 declared, 4 defined [51] +d_decl_old_style_arguments.c(14): warning: argument 'num' unused in function 'func' [231] +d_decl_old_style_arguments.c(14): warning: argument 'ptr' unused in function 'func' [231] +d_decl_old_style_arguments.c(14): warning: argument 'dbl' unused in function 'func' [231] +d_decl_old_style_arguments.c(14): warning: argument 'def' unused in function 'func' [231] Index: src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.c diff -u src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.c:1.3 src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.c:1.4 --- src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.c:1.3 Sun Feb 21 09:07:58 2021 +++ src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.c Sat Jan 15 14:22:03 2022 @@ -1,6 +1,7 @@ -/* $NetBSD: d_incorrect_array_size.c,v 1.3 2021/02/21 09:07:58 rillig Exp $ */ +/* $NetBSD: d_incorrect_array_size.c,v 1.4 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_incorrect_array_size.c" struct foo { - int a[-1]; /* expect: 20 */ + /* expect+1: error: negative array dimension (-1) [20] */ + int a[-1]; }; Index: src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.exp diff -u src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.exp:1.3 src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.exp:1.4 --- src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.exp:1.3 Sun Mar 21 20:44:59 2021 +++ src/tests/usr.bin/xlint/lint1/d_incorrect_array_size.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_incorrect_array_size.c(5): error: negative array dimension (-1) [20] +d_incorrect_array_size.c(6): error: negative array dimension (-1) [20] Index: src/tests/usr.bin/xlint/lint1/d_pr_22119.exp diff -u src/tests/usr.bin/xlint/lint1/d_pr_22119.exp:1.3 src/tests/usr.bin/xlint/lint1/d_pr_22119.exp:1.4 --- src/tests/usr.bin/xlint/lint1/d_pr_22119.exp:1.3 Fri Mar 26 23:17:33 2021 +++ src/tests/usr.bin/xlint/lint1/d_pr_22119.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_pr_22119.c(16): error: 'p' undefined [99] +d_pr_22119.c(17): error: 'p' undefined [99] Index: src/tests/usr.bin/xlint/lint1/d_return_type.c diff -u src/tests/usr.bin/xlint/lint1/d_return_type.c:1.3 src/tests/usr.bin/xlint/lint1/d_return_type.c:1.4 --- src/tests/usr.bin/xlint/lint1/d_return_type.c:1.3 Sun Feb 21 09:07:58 2021 +++ src/tests/usr.bin/xlint/lint1/d_return_type.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_return_type.c,v 1.3 2021/02/21 09:07:58 rillig Exp $ */ +/* $NetBSD: d_return_type.c,v 1.4 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_return_type.c" enum A { @@ -12,5 +12,6 @@ enum B { enum A func(enum B arg) { - return arg; /* expect: 211 */ + /* expect+1: warning: return value type mismatch (enum A) and (enum B) [211] */ + return arg; } Index: src/tests/usr.bin/xlint/lint1/d_type_conv1.c diff -u src/tests/usr.bin/xlint/lint1/d_type_conv1.c:1.3 src/tests/usr.bin/xlint/lint1/d_type_conv1.c:1.4 --- src/tests/usr.bin/xlint/lint1/d_type_conv1.c:1.3 Sun Feb 21 09:07:58 2021 +++ src/tests/usr.bin/xlint/lint1/d_type_conv1.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_type_conv1.c,v 1.3 2021/02/21 09:07:58 rillig Exp $ */ +/* $NetBSD: d_type_conv1.c,v 1.4 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_type_conv1.c" /* Flag information-losing type conversion in argument lists */ @@ -10,5 +10,6 @@ should_fail() { long long x = 20; - f(x); /* expect: 259 */ + /* expect+1: warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259] */ + f(x); } Index: src/tests/usr.bin/xlint/lint1/d_type_conv2.c diff -u src/tests/usr.bin/xlint/lint1/d_type_conv2.c:1.3 src/tests/usr.bin/xlint/lint1/d_type_conv2.c:1.4 --- src/tests/usr.bin/xlint/lint1/d_type_conv2.c:1.3 Sun Feb 21 09:07:58 2021 +++ src/tests/usr.bin/xlint/lint1/d_type_conv2.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_type_conv2.c,v 1.3 2021/02/21 09:07:58 rillig Exp $ */ +/* $NetBSD: d_type_conv2.c,v 1.4 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_type_conv2.c" /* Flag information-losing type conversion in argument lists */ @@ -10,5 +10,6 @@ should_fail() { double x = 2.0; - f(x); /* expect: 259 */ + /* expect+1: warning: argument #1 is converted from 'double' to 'float' due to prototype [259] */ + f(x); } Index: src/tests/usr.bin/xlint/lint1/expr_range.c diff -u src/tests/usr.bin/xlint/lint1/expr_range.c:1.3 src/tests/usr.bin/xlint/lint1/expr_range.c:1.4 --- src/tests/usr.bin/xlint/lint1/expr_range.c:1.3 Mon Jul 5 19:43:29 2021 +++ src/tests/usr.bin/xlint/lint1/expr_range.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: expr_range.c,v 1.3 2021/07/05 19:43:29 rillig Exp $ */ +/* $NetBSD: expr_range.c,v 1.4 2022/01/15 14:22:03 rillig Exp $ */ # 3 "expr_range.c" /* @@ -27,7 +27,8 @@ example(unsigned x) case 0: println("0 is reachable"); break; - case 1: /* expect: statement not reached */ + case 1: + /* expect-1: warning: statement not reached [193] */ println("1 is not reachable"); break; case 2: @@ -36,7 +37,8 @@ example(unsigned x) case 6: println("6 is reachable"); break; - case 7: /* expect: statement not reached */ + case 7: + /* expect-1: warning: statement not reached [193] */ println("7 is not reachable"); break; } Index: src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.exp diff -u src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.exp:1.3 src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.exp:1.4 --- src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.exp:1.3 Sun May 2 22:07:49 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -gcc_bit_field_types.c(20): warning: illegal bit-field type 'double' [35] +gcc_bit_field_types.c(21): warning: illegal bit-field type 'double' [35] Index: src/tests/usr.bin/xlint/lint1/d_constant_conv2.exp diff -u src/tests/usr.bin/xlint/lint1/d_constant_conv2.exp:1.5 src/tests/usr.bin/xlint/lint1/d_constant_conv2.exp:1.6 --- src/tests/usr.bin/xlint/lint1/d_constant_conv2.exp:1.5 Thu Feb 4 06:55:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_constant_conv2.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_constant_conv2.c(11): warning: argument #1 is converted from 'double' to 'unsigned int' due to prototype [259] +d_constant_conv2.c(12): warning: argument #1 is converted from 'double' to 'unsigned int' due to prototype [259] Index: src/tests/usr.bin/xlint/lint1/d_cvt_constant.c diff -u src/tests/usr.bin/xlint/lint1/d_cvt_constant.c:1.5 src/tests/usr.bin/xlint/lint1/d_cvt_constant.c:1.6 --- src/tests/usr.bin/xlint/lint1/d_cvt_constant.c:1.5 Sun Feb 21 09:17:55 2021 +++ src/tests/usr.bin/xlint/lint1/d_cvt_constant.c Sat Jan 15 14:22:03 2022 @@ -1,11 +1,12 @@ -/* $NetBSD: d_cvt_constant.c,v 1.5 2021/02/21 09:17:55 rillig Exp $ */ +/* $NetBSD: d_cvt_constant.c,v 1.6 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_cvt_constant.c" /* the second assignment assumes failed before */ int main(void) { - double x = 1; /* expect: 191 */ + /* expect+1: warning: 'x' set but not used in function 'main' [191] */ + double x = 1; int foo = 0; if (foo) x = 1; Index: src/tests/usr.bin/xlint/lint1/d_cvt_constant.exp diff -u src/tests/usr.bin/xlint/lint1/d_cvt_constant.exp:1.5 src/tests/usr.bin/xlint/lint1/d_cvt_constant.exp:1.6 --- src/tests/usr.bin/xlint/lint1/d_cvt_constant.exp:1.5 Fri Apr 9 20:12:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_cvt_constant.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_cvt_constant.c(8): warning: 'x' set but not used in function 'main' [191] +d_cvt_constant.c(9): warning: 'x' set but not used in function 'main' [191] Index: src/tests/usr.bin/xlint/lint1/d_fold_test.exp diff -u src/tests/usr.bin/xlint/lint1/d_fold_test.exp:1.5 src/tests/usr.bin/xlint/lint1/d_fold_test.exp:1.6 --- src/tests/usr.bin/xlint/lint1/d_fold_test.exp:1.5 Tue Aug 3 18:44:33 2021 +++ src/tests/usr.bin/xlint/lint1/d_fold_test.exp Sat Jan 15 14:22:03 2022 @@ -1,14 +1,14 @@ -d_fold_test.c(59): error: controlling expressions must have scalar type [204] -d_fold_test.c(59): warning: argument 's' unused in function 'if_struct' [231] -d_fold_test.c(60): error: controlling expressions must have scalar type [204] -d_fold_test.c(60): warning: argument 'u' unused in function 'if_union' [231] -d_fold_test.c(65): error: controlling expressions must have scalar type [204] -d_fold_test.c(65): warning: argument 's' unused in function 'while_struct' [231] -d_fold_test.c(66): error: controlling expressions must have scalar type [204] -d_fold_test.c(66): warning: end-of-loop code not reached [223] -d_fold_test.c(66): warning: argument 's' unused in function 'for_struct' [231] -d_fold_test.c(67): error: controlling expressions must have scalar type [204] -d_fold_test.c(67): warning: argument 's' unused in function 'do_while_struct' [231] -d_fold_test.c(70): error: first operand must have scalar type, op ? : [170] -d_fold_test.c(70): warning: function 'conditional_struct' expects to return value [214] -d_fold_test.c(70): warning: argument 's' unused in function 'conditional_struct' [231] +d_fold_test.c(61): error: controlling expressions must have scalar type [204] +d_fold_test.c(61): warning: argument 's' unused in function 'if_struct' [231] +d_fold_test.c(64): error: controlling expressions must have scalar type [204] +d_fold_test.c(64): warning: argument 'u' unused in function 'if_union' [231] +d_fold_test.c(71): error: controlling expressions must have scalar type [204] +d_fold_test.c(71): warning: argument 's' unused in function 'while_struct' [231] +d_fold_test.c(75): error: controlling expressions must have scalar type [204] +d_fold_test.c(75): warning: end-of-loop code not reached [223] +d_fold_test.c(75): warning: argument 's' unused in function 'for_struct' [231] +d_fold_test.c(78): error: controlling expressions must have scalar type [204] +d_fold_test.c(78): warning: argument 's' unused in function 'do_while_struct' [231] +d_fold_test.c(84): error: first operand must have scalar type, op ? : [170] +d_fold_test.c(84): warning: function 'conditional_struct' expects to return value [214] +d_fold_test.c(84): warning: argument 's' unused in function 'conditional_struct' [231] Index: src/tests/usr.bin/xlint/lint1/d_long_double_int.exp diff -u src/tests/usr.bin/xlint/lint1/d_long_double_int.exp:1.5 src/tests/usr.bin/xlint/lint1/d_long_double_int.exp:1.6 --- src/tests/usr.bin/xlint/lint1/d_long_double_int.exp:1.5 Sat Aug 14 13:00:55 2021 +++ src/tests/usr.bin/xlint/lint1/d_long_double_int.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_long_double_int.c(9): warning: illegal combination of 'pointer to long double' and 'pointer to long', op '==' [124] +d_long_double_int.c(10): warning: illegal combination of 'pointer to long double' and 'pointer to long', op '==' [124] Index: src/tests/usr.bin/xlint/lint1/d_type_conv1.exp diff -u src/tests/usr.bin/xlint/lint1/d_type_conv1.exp:1.5 src/tests/usr.bin/xlint/lint1/d_type_conv1.exp:1.6 --- src/tests/usr.bin/xlint/lint1/d_type_conv1.exp:1.5 Thu Feb 4 06:55:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_type_conv1.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_type_conv1.c(13): warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259] +d_type_conv1.c(14): warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259] Index: src/tests/usr.bin/xlint/lint1/d_type_conv2.exp diff -u src/tests/usr.bin/xlint/lint1/d_type_conv2.exp:1.5 src/tests/usr.bin/xlint/lint1/d_type_conv2.exp:1.6 --- src/tests/usr.bin/xlint/lint1/d_type_conv2.exp:1.5 Thu Feb 4 06:55:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_type_conv2.exp Sat Jan 15 14:22:03 2022 @@ -1 +1 @@ -d_type_conv2.c(13): warning: argument #1 is converted from 'double' to 'float' due to prototype [259] +d_type_conv2.c(14): warning: argument #1 is converted from 'double' to 'float' due to prototype [259] Index: src/tests/usr.bin/xlint/lint1/d_type_conv3.exp diff -u src/tests/usr.bin/xlint/lint1/d_type_conv3.exp:1.5 src/tests/usr.bin/xlint/lint1/d_type_conv3.exp:1.6 --- src/tests/usr.bin/xlint/lint1/d_type_conv3.exp:1.5 Thu Feb 4 06:55:00 2021 +++ src/tests/usr.bin/xlint/lint1/d_type_conv3.exp Sat Jan 15 14:22:03 2022 @@ -1,2 +1,2 @@ -d_type_conv3.c(12): warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259] -d_type_conv3.c(12): warning: conversion of 'long long' to 'unsigned int' is out of range, arg #1 [295] +d_type_conv3.c(14): warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259] +d_type_conv3.c(14): warning: conversion of 'long long' to 'unsigned int' is out of range, arg #1 [295] Index: src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.c diff -u src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.c:1.5 src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.c:1.6 --- src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.c:1.5 Tue May 4 05:40:10 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_bit_field_types.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_bit_field_types.c,v 1.5 2021/05/04 05:40:10 rillig Exp $ */ +/* $NetBSD: gcc_bit_field_types.c,v 1.6 2022/01/15 14:22:03 rillig Exp $ */ # 3 "gcc_bit_field_types.c" /* @@ -17,7 +17,8 @@ struct example { unsigned long unsigned_long_flag: 1; long long long_long_flag: 1; unsigned long long unsigned_long_long_flag: 1; - double double_flag: 1; /* expect: illegal bit-field type 'double' */ + /* expect+1: warning: illegal bit-field type 'double' [35] */ + double double_flag: 1; }; struct large_bit_field { Index: src/tests/usr.bin/xlint/lint1/d_fold_test.c diff -u src/tests/usr.bin/xlint/lint1/d_fold_test.c:1.4 src/tests/usr.bin/xlint/lint1/d_fold_test.c:1.5 --- src/tests/usr.bin/xlint/lint1/d_fold_test.c:1.4 Mon Apr 5 01:35:34 2021 +++ src/tests/usr.bin/xlint/lint1/d_fold_test.c Sat Jan 15 14:22:03 2022 @@ -56,15 +56,29 @@ void if_enum(enum e e) { if (e) return /* C99 6.2.5p20 */ void if_array(struct arr arr) { if (arr.arr) return; } -void if_struct(struct s s) { if (s) return; } /* expect: 204 *//* expect: 231 */ -void if_union(union u u) { if (u) return; } /* expect: 204 *//* expect: 231 */ +/* expect+2: error: controlling expressions must have scalar type [204] */ +/* expect+1: warning: argument 's' unused in function 'if_struct' [231] */ +void if_struct(struct s s) { if (s) return; } +/* expect+2: error: controlling expressions must have scalar type [204] */ +/* expect+1: warning: argument 'u' unused in function 'if_union' [231] */ +void if_union(union u u) { if (u) return; } void if_function(void) { if (if_function) return; } void if_pointer(void *p) { if (p) return; } /* C99 6.8.5 */ -void while_struct(struct s s) { while (s) return; } /* expect: 204 *//* expect: 231 */ -void for_struct(struct s s) { for (;s;) return; } /* expect: 204 *//* expect: 223 *//* expect: 231 */ -void do_while_struct(struct s s) { do { return; } while (s); } /* expect: 204 *//* expect: 231 */ +/* expect+2: error: controlling expressions must have scalar type [204] */ +/* expect+1: warning: argument 's' unused in function 'while_struct' [231] */ +void while_struct(struct s s) { while (s) return; } +/* expect+3: error: controlling expressions must have scalar type [204] */ +/* expect+2: warning: end-of-loop code not reached [223] */ +/* expect+1: warning: argument 's' unused in function 'for_struct' [231] */ +void for_struct(struct s s) { for (;s;) return; } +/* expect+2: error: controlling expressions must have scalar type [204] */ +/* expect+1: warning: argument 's' unused in function 'do_while_struct' [231] */ +void do_while_struct(struct s s) { do { return; } while (s); } /* C99 6.5.15 does not require a scalar type, curiously. */ -int conditional_struct(struct s s) { return s ? 1 : 2; } /* expect: 170 *//* expect: 214 *//* expect: 231 */ +/* expect+3: error: first operand must have scalar type, op ? : [170] */ +/* expect+2: warning: function 'conditional_struct' expects to return value [214] */ +/* expect+1: warning: argument 's' unused in function 'conditional_struct' [231] */ +int conditional_struct(struct s s) { return s ? 1 : 2; } Index: src/tests/usr.bin/xlint/lint1/d_lint_assert.c diff -u src/tests/usr.bin/xlint/lint1/d_lint_assert.c:1.4 src/tests/usr.bin/xlint/lint1/d_lint_assert.c:1.5 --- src/tests/usr.bin/xlint/lint1/d_lint_assert.c:1.4 Sat Jul 10 12:10:39 2021 +++ src/tests/usr.bin/xlint/lint1/d_lint_assert.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_lint_assert.c,v 1.4 2021/07/10 12:10:39 rillig Exp $ */ +/* $NetBSD: d_lint_assert.c,v 1.5 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_lint_assert.c" /* @@ -12,7 +12,8 @@ enum { // failed in check_global_variable at decl.c:3135 // near d_lint_assert.c:14 A = +++ -}; /* expect: 249 */ +}; +/* expect-1: error: syntax error '}' [249] */ /* * Before decl.c 1.196 from 2021-07-10, lint ran into an assertion failure Index: src/tests/usr.bin/xlint/lint1/d_lint_assert.exp diff -u src/tests/usr.bin/xlint/lint1/d_lint_assert.exp:1.4 src/tests/usr.bin/xlint/lint1/d_lint_assert.exp:1.5 --- src/tests/usr.bin/xlint/lint1/d_lint_assert.exp:1.4 Sat Jul 10 12:10:39 2021 +++ src/tests/usr.bin/xlint/lint1/d_lint_assert.exp Sat Jan 15 14:22:03 2022 @@ -1,2 +1,2 @@ d_lint_assert.c(15): error: syntax error '}' [249] -d_lint_assert.c(22): warning: old style declaration; add 'int' [1] +d_lint_assert.c(23): warning: old style declaration; add 'int' [1] Index: src/tests/usr.bin/xlint/lint1/d_long_double_int.c diff -u src/tests/usr.bin/xlint/lint1/d_long_double_int.c:1.4 src/tests/usr.bin/xlint/lint1/d_long_double_int.c:1.5 --- src/tests/usr.bin/xlint/lint1/d_long_double_int.c:1.4 Sun Feb 21 09:07:58 2021 +++ src/tests/usr.bin/xlint/lint1/d_long_double_int.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_long_double_int.c,v 1.4 2021/02/21 09:07:58 rillig Exp $ */ +/* $NetBSD: d_long_double_int.c,v 1.5 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_long_double_int.c" /* PR bin/39639: writing "long double" gave "long int" */ @@ -6,5 +6,6 @@ int fail(long double *a, long int *b) { - return a == b; /* expect: 124 */ + /* expect+1: warning: illegal combination of 'pointer to long double' and 'pointer to long', op '==' [124] */ + return a == b; } Index: src/tests/usr.bin/xlint/lint1/d_type_conv3.c diff -u src/tests/usr.bin/xlint/lint1/d_type_conv3.c:1.4 src/tests/usr.bin/xlint/lint1/d_type_conv3.c:1.5 --- src/tests/usr.bin/xlint/lint1/d_type_conv3.c:1.4 Mon Apr 5 01:35:34 2021 +++ src/tests/usr.bin/xlint/lint1/d_type_conv3.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_type_conv3.c,v 1.4 2021/04/05 01:35:34 rillig Exp $ */ +/* $NetBSD: d_type_conv3.c,v 1.5 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_type_conv3.c" /* Flag information-losing type conversion in argument lists */ @@ -9,5 +9,7 @@ void should_fail() { - f(0x7fffffffffffffffLL); /* expect: 259 *//* expect: 295 */ + /* expect+2: warning: argument #1 is converted from 'long long' to 'unsigned int' due to prototype [259] */ + /* expect+1: warning: conversion of 'long long' to 'unsigned int' is out of range, arg #1 [295] */ + f(0x7fffffffffffffffLL); } Index: src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c diff -u src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c:1.9 src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c:1.10 --- src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c:1.9 Wed Dec 22 14:11:14 2021 +++ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_init_array_using_string.c,v 1.9 2021/12/22 14:11:14 rillig Exp $ */ +/* $NetBSD: d_init_array_using_string.c,v 1.10 2022/01/15 14:22:03 rillig Exp $ */ # 3 "d_init_array_using_string.c" /* @@ -60,8 +60,10 @@ test_array_initialization_in_struct(void }; struct cs_ws type_mismatch = { - L"", /* expect: warning: illegal combination of integer (char) and pointer (pointer to int) [183] */ - "", /* expect: warning: illegal combination of integer (char) and pointer (pointer to char) [183] */ + /* expect+1: warning: illegal combination of integer (char) and pointer (pointer to int) [183] */ + L"", + /* expect+1: warning: illegal combination of integer (char) and pointer (pointer to char) [183] */ + "", }; struct cs_ws no_terminating_null = { Index: src/tests/usr.bin/xlint/lint1/emit.c diff -u src/tests/usr.bin/xlint/lint1/emit.c:1.9 src/tests/usr.bin/xlint/lint1/emit.c:1.10 --- src/tests/usr.bin/xlint/lint1/emit.c:1.9 Sun Nov 28 10:11:15 2021 +++ src/tests/usr.bin/xlint/lint1/emit.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: emit.c,v 1.9 2021/11/28 10:11:15 rillig Exp $ */ +/* $NetBSD: emit.c,v 1.10 2022/01/15 14:22:03 rillig Exp $ */ # 3 "emit.c" /* @@ -104,7 +104,8 @@ extern enum { extern int declared_int; int defined_int; -static int static_int; /* expect: unused */ +/* expect+1: warning: static variable static_int unused [226] */ +static int static_int; /* * Type qualifiers. @@ -124,7 +125,8 @@ extern /* implicit int */ return_implici /* For function declarations, the keyword 'extern' is optional. */ extern void extern_return_void_no_parameters(void); /* implicit extern */ void return_void_no_parameters(void); -static void static_return_void_no_parameters(void); /* expect: declared */ +/* expect+1: warning: static function static_return_void_no_parameters declared but not defined [290] */ +static void static_return_void_no_parameters(void); void taking_int(int); /* The 'const' parameter does not make a difference. */ @@ -143,7 +145,8 @@ void taking_varargs(const char *, ...); * is nevertheless recorded. There's probably a good reason for recording * it. */ -static int static_function(void); /* expect: declared */ +/* expect+1: warning: static function static_function declared but not defined [290] */ +static int static_function(void); void my_printf(const char *, ...); void my_scanf(const char *, ...); Index: src/tests/usr.bin/xlint/lint1/emit.exp-ln diff -u src/tests/usr.bin/xlint/lint1/emit.exp-ln:1.9 src/tests/usr.bin/xlint/lint1/emit.exp-ln:1.10 --- src/tests/usr.bin/xlint/lint1/emit.exp-ln:1.9 Sun Nov 28 10:01:36 2021 +++ src/tests/usr.bin/xlint/lint1/emit.exp-ln Sat Jan 15 14:22:03 2022 @@ -35,50 +35,50 @@ Semit.c 97d0.97e21extern_anonymous_enumeT395.0.0 105d0.105e12declared_intI 106d0.106t11defined_intI -113d0.113e16extern_const_intcI -114d0.114e19extern_volatile_intvI -115d0.115e25extern_const_volatile_intcvI -121d0.121e30return_void_unknown_parametersFV -122d0.122e38return_implicit_int_unknown_parametersFI -125d0.125e32extern_return_void_no_parametersF0V -126d0.126e25return_void_no_parametersF0V -127d0.127es32static_return_void_no_parametersF0V -129d0.129e10taking_intF1IV -131d0.131e16taking_const_intF1cIV -132d0.132e22taking_int_double_boolF3IDBV -134d0.133e29taking_struct_union_enum_tagsF3sT110struct_taguT19union_tageT18enum_tagV -136d0.135e33taking_struct_union_enum_typedefsF3sT214struct_typedefuT213union_typedefeT212enum_typedefV -138d0.138e14taking_varargsF2PcCEV -146d0.146es15static_functionF0I -148d0.148e9my_printfF2PcCEV -149d0.149e8my_scanfF2PcCEV -162c0.162s2"%"i9my_printff2PcCPCV -163c0.163s2"%s"i9my_printff2PcCPCV -164c0.164s2"%%"i9my_printff2PcCPCV -165c0.165s2"%\\%\"%\'%\a%\b%\f%\n%\r%\t%\v%\177"i9my_printff2PcCPCV -160d0.160d14cover_outqcharF0V -171c0.171s2"%-3d%+3d% d%#x%03d%*.*s%6.2f%hd%ld%Ld%qd"i9my_printff2PcCPCV -172c0.172s2"%[-]%[--]%[---]%[]"i8my_scanff2PcCPCV -169d0.169d14cover_outfstrgF0V -181d0.181d17call_gcc_builtinsF2IPLV -201d0.201v0d15varargs_commentF1PcCV -207d0.207v0d17varargs_0_commentF1PcCV -213d0.213v3d17varargs_3_commentF4IIIPcCV -219d0.219d18printflike_commentF1PcCV -225d0.225d20printflike_0_commentF1PcCV -231d0.231v3P3d20printflike_3_commentF3IIPcCV -237d0.237v10P10d21printflike_10_commentF10IIIIIIIIIPcCV -245d0.245d17scanflike_commentF1PcCV -251d0.251d19scanflike_0_commentF1PcCV -257d0.257v3S3d19scanflike_3_commentF3IIPcCV -262d0.262dr13used_functionF0I -270c0.270i13used_functionf0I -271c0.271d13used_functionf0I -272c0.272u13used_functionf0I -268d0.268dri15inline_functionF0I -275d0.275e17declared_used_varI -276d0.276t16defined_used_varI -285u0.285x17declared_used_var -286u0.286x16defined_used_var -283d0.283d8use_varsF0V -302d0.302d8compoundsT134compound_expression_in_initializer +114d0.114e16extern_const_intcI +115d0.115e19extern_volatile_intvI +116d0.116e25extern_const_volatile_intcvI +122d0.122e30return_void_unknown_parametersFV +123d0.123e38return_implicit_int_unknown_parametersFI +126d0.126e32extern_return_void_no_parametersF0V +127d0.127e25return_void_no_parametersF0V +129d0.129es32static_return_void_no_parametersF0V +131d0.131e10taking_intF1IV +133d0.133e16taking_const_intF1cIV +134d0.134e22taking_int_double_boolF3IDBV +136d0.135e29taking_struct_union_enum_tagsF3sT110struct_taguT19union_tageT18enum_tagV +138d0.137e33taking_struct_union_enum_typedefsF3sT214struct_typedefuT213union_typedefeT212enum_typedefV +140d0.140e14taking_varargsF2PcCEV +149d0.149es15static_functionF0I +151d0.151e9my_printfF2PcCEV +152d0.152e8my_scanfF2PcCEV +165c0.165s2"%"i9my_printff2PcCPCV +166c0.166s2"%s"i9my_printff2PcCPCV +167c0.167s2"%%"i9my_printff2PcCPCV +168c0.168s2"%\\%\"%\'%\a%\b%\f%\n%\r%\t%\v%\177"i9my_printff2PcCPCV +163d0.163d14cover_outqcharF0V +174c0.174s2"%-3d%+3d% d%#x%03d%*.*s%6.2f%hd%ld%Ld%qd"i9my_printff2PcCPCV +175c0.175s2"%[-]%[--]%[---]%[]"i8my_scanff2PcCPCV +172d0.172d14cover_outfstrgF0V +184d0.184d17call_gcc_builtinsF2IPLV +204d0.204v0d15varargs_commentF1PcCV +210d0.210v0d17varargs_0_commentF1PcCV +216d0.216v3d17varargs_3_commentF4IIIPcCV +222d0.222d18printflike_commentF1PcCV +228d0.228d20printflike_0_commentF1PcCV +234d0.234v3P3d20printflike_3_commentF3IIPcCV +240d0.240v10P10d21printflike_10_commentF10IIIIIIIIIPcCV +248d0.248d17scanflike_commentF1PcCV +254d0.254d19scanflike_0_commentF1PcCV +260d0.260v3S3d19scanflike_3_commentF3IIPcCV +265d0.265dr13used_functionF0I +273c0.273i13used_functionf0I +274c0.274d13used_functionf0I +275c0.275u13used_functionf0I +271d0.271dri15inline_functionF0I +278d0.278e17declared_used_varI +279d0.279t16defined_used_varI +288u0.288x17declared_used_var +289u0.289x16defined_used_var +286d0.286d8use_varsF0V +305d0.305d8compoundsT134compound_expression_in_initializer Index: src/tests/usr.bin/xlint/lint1/decl_struct_member.c diff -u src/tests/usr.bin/xlint/lint1/decl_struct_member.c:1.13 src/tests/usr.bin/xlint/lint1/decl_struct_member.c:1.14 --- src/tests/usr.bin/xlint/lint1/decl_struct_member.c:1.13 Wed Dec 22 14:49:11 2021 +++ src/tests/usr.bin/xlint/lint1/decl_struct_member.c Sat Jan 15 14:22:03 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: decl_struct_member.c,v 1.13 2021/12/22 14:49:11 rillig Exp $ */ +/* $NetBSD: decl_struct_member.c,v 1.14 2022/01/15 14:22:03 rillig Exp $ */ # 3 "decl_struct_member.c" struct multi_attributes { @@ -44,7 +44,8 @@ struct goto { * "is_struct_or_union(dcs->d_type->t_tspec)" at cgram.y:846 */ struct { - char; /* expect: syntax error 'unnamed member' */ + /* expect+1: error: syntax error 'unnamed member' [249] */ + char; }; struct cover_notype_struct_declarators { @@ -76,7 +77,8 @@ struct array_of_bit_fields { * Before decl.c 1.188 from 2021-06-20, lint ran into a segmentation fault. */ struct { - char a(_)0 /* expect: syntax error '0' */ + /* expect+1: error: syntax error '0' [249] */ + char a(_)0 /* * Before cgram.y 1.328 from 2021-07-15, lint ran into an assertion failure