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