Module Name: src Committed By: rillig Date: Fri Jun 17 18:54:53 UTC 2022
Modified Files: src/tests/usr.bin/xlint: check-expect.lua src/tests/usr.bin/xlint/lint1: c11_generic_expression.c d_c99_init.c d_init_array_using_string.c decl.c decl_direct_abstract.c decl_enum_c90.c decl_struct_member.c expr_binary.c expr_binary_trad.c expr_precedence.c feat_stacktrace.c gcc_attribute.c gcc_attribute_aligned.c gcc_attribute_enum.c gcc_init_compound_literal.c gcc_stmt_asm.c gcc_typeof_after_statement.c init_c90.c lex_char.c lex_integer.c lex_integer_binary.c lex_integer_ilp32.c lex_string.c lex_wide_char.c lex_wide_string.c msg_005.c msg_031.c msg_034.c msg_041.c msg_048.c msg_066.c msg_069.c msg_077.c msg_080.c msg_103.c msg_104.c msg_118.c msg_155.c msg_184.c msg_189.c msg_193.c msg_211.c msg_232.c msg_249.c msg_250.c msg_251.c msg_253.c msg_254.c msg_257.c msg_259.c msg_259_c90.c msg_259_ilp32.c msg_265.c msg_283.c msg_289.c msg_312.c msg_333.c msg_341.c msg_342.c msg_342.exp msg_343.c msg_344.c msg_345.c op_colon.c parse_stmt_error.c parse_stmt_iter_error.c parse_type_name.c stmt_for.c stmt_goto.c stmt_if.c src/usr.bin/xlint/lint1: README.md Log Message: tests/lint: make 'expect+-' comments stricter Previously, the expectations from these comments were already satisfied if the expectation occurred somewhere in the actual message from lint. This meant that the prefix 'error:' or 'warning:' could be omitted from the 'expect' comment. These omissions were hard to see in a manual review. Now any omissions must be visually marked with '...'. The test msg_342 now reports its messages properly as being in the file msg_342.c, rather than msg_341.c. This had been a copy-and-paste mistake. To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 src/tests/usr.bin/xlint/check-expect.lua cvs rdiff -u -r1.11 -r1.12 \ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c \ src/tests/usr.bin/xlint/lint1/msg_249.c cvs rdiff -u -r1.40 -r1.41 src/tests/usr.bin/xlint/lint1/d_c99_init.c cvs rdiff -u -r1.10 -r1.11 \ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c \ src/tests/usr.bin/xlint/lint1/gcc_attribute.c \ src/tests/usr.bin/xlint/lint1/msg_155.c cvs rdiff -u -r1.16 -r1.17 src/tests/usr.bin/xlint/lint1/decl.c cvs rdiff -u -r1.6 -r1.7 src/tests/usr.bin/xlint/lint1/decl_direct_abstract.c \ src/tests/usr.bin/xlint/lint1/msg_343.c cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/decl_enum_c90.c \ src/tests/usr.bin/xlint/lint1/expr_binary_trad.c \ src/tests/usr.bin/xlint/lint1/lex_integer_binary.c \ src/tests/usr.bin/xlint/lint1/msg_341.c \ src/tests/usr.bin/xlint/lint1/msg_344.c \ src/tests/usr.bin/xlint/lint1/parse_stmt_error.c \ src/tests/usr.bin/xlint/lint1/parse_stmt_iter_error.c \ src/tests/usr.bin/xlint/lint1/stmt_goto.c \ src/tests/usr.bin/xlint/lint1/stmt_if.c cvs rdiff -u -r1.14 -r1.15 src/tests/usr.bin/xlint/lint1/decl_struct_member.c cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/expr_binary.c \ src/tests/usr.bin/xlint/lint1/gcc_init_compound_literal.c \ src/tests/usr.bin/xlint/lint1/lex_char.c \ src/tests/usr.bin/xlint/lint1/msg_034.c \ src/tests/usr.bin/xlint/lint1/msg_066.c \ src/tests/usr.bin/xlint/lint1/msg_077.c \ src/tests/usr.bin/xlint/lint1/msg_118.c \ src/tests/usr.bin/xlint/lint1/msg_189.c \ src/tests/usr.bin/xlint/lint1/msg_232.c cvs rdiff -u -r1.8 -r1.9 src/tests/usr.bin/xlint/lint1/expr_precedence.c \ src/tests/usr.bin/xlint/lint1/parse_type_name.c cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/feat_stacktrace.c \ src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c \ src/tests/usr.bin/xlint/lint1/gcc_typeof_after_statement.c \ src/tests/usr.bin/xlint/lint1/lex_wide_char.c \ src/tests/usr.bin/xlint/lint1/lex_wide_string.c \ src/tests/usr.bin/xlint/lint1/msg_345.c \ src/tests/usr.bin/xlint/lint1/op_colon.c \ src/tests/usr.bin/xlint/lint1/stmt_for.c cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/gcc_attribute_enum.c \ src/tests/usr.bin/xlint/lint1/lex_string.c \ src/tests/usr.bin/xlint/lint1/msg_005.c \ src/tests/usr.bin/xlint/lint1/msg_041.c \ src/tests/usr.bin/xlint/lint1/msg_048.c \ src/tests/usr.bin/xlint/lint1/msg_080.c \ src/tests/usr.bin/xlint/lint1/msg_184.c \ src/tests/usr.bin/xlint/lint1/msg_250.c \ src/tests/usr.bin/xlint/lint1/msg_265.c \ src/tests/usr.bin/xlint/lint1/msg_333.c cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/gcc_stmt_asm.c \ src/tests/usr.bin/xlint/lint1/init_c90.c \ src/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c \ src/tests/usr.bin/xlint/lint1/msg_069.c \ src/tests/usr.bin/xlint/lint1/msg_103.c \ src/tests/usr.bin/xlint/lint1/msg_104.c \ src/tests/usr.bin/xlint/lint1/msg_211.c \ src/tests/usr.bin/xlint/lint1/msg_251.c \ src/tests/usr.bin/xlint/lint1/msg_253.c \ src/tests/usr.bin/xlint/lint1/msg_254.c \ src/tests/usr.bin/xlint/lint1/msg_257.c \ src/tests/usr.bin/xlint/lint1/msg_259_c90.c \ src/tests/usr.bin/xlint/lint1/msg_283.c \ src/tests/usr.bin/xlint/lint1/msg_289.c \ src/tests/usr.bin/xlint/lint1/msg_312.c \ src/tests/usr.bin/xlint/lint1/msg_342.c \ src/tests/usr.bin/xlint/lint1/msg_342.exp cvs rdiff -u -r1.9 -r1.10 src/tests/usr.bin/xlint/lint1/lex_integer.c cvs rdiff -u -r1.7 -r1.8 src/tests/usr.bin/xlint/lint1/msg_031.c \ src/tests/usr.bin/xlint/lint1/msg_259_ilp32.c cvs rdiff -u -r1.18 -r1.19 src/tests/usr.bin/xlint/lint1/msg_193.c cvs rdiff -u -r1.20 -r1.21 src/tests/usr.bin/xlint/lint1/msg_259.c cvs rdiff -u -r1.5 -r1.6 src/usr.bin/xlint/lint1/README.md 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/check-expect.lua diff -u src/tests/usr.bin/xlint/check-expect.lua:1.20 src/tests/usr.bin/xlint/check-expect.lua:1.21 --- src/tests/usr.bin/xlint/check-expect.lua:1.20 Fri Jun 17 16:10:10 2022 +++ src/tests/usr.bin/xlint/check-expect.lua Fri Jun 17 18:54:53 2022 @@ -1,5 +1,5 @@ #! /usr/bin/lua --- $NetBSD: check-expect.lua,v 1.20 2022/06/17 16:10:10 rillig Exp $ +-- $NetBSD: check-expect.lua,v 1.21 2022/06/17 18:54:53 rillig Exp $ --[[ @@ -12,6 +12,17 @@ To regenerate the .exp files, see lint1/ ]] +local function test(func) + func() +end + +local function assert_equals(got, expected) + if got ~= expected then + assert(false, string.format("got %q, expected %q", got, expected)) + end +end + + local had_errors = false ---@param fmt string function print_error(fmt, ...) @@ -34,6 +45,7 @@ local function load_lines(fname) return lines end + -- Load the 'expect:' comments from a C source file. -- -- example return values: @@ -114,6 +126,52 @@ local function load_exp(exp_fname) end +---@param comment string +---@param pattern string +---@return boolean +local function matches(comment, pattern) + if comment == "" then return false end + + local any_prefix = pattern:sub(1, 3) == "..." + if any_prefix then pattern = pattern:sub(4) end + local any_suffix = pattern:sub(-3) == "..." + if any_suffix then pattern = pattern:sub(1, -4) end + + if any_prefix and any_suffix then + return comment:find(pattern, 1, true) ~= nil + elseif any_prefix then + return pattern ~= "" and comment:sub(-#pattern) == pattern + elseif any_suffix then + return comment:sub(1, #pattern) == pattern + else + return comment == pattern + end +end + +test(function() + assert_equals(matches("a", "a"), true) + assert_equals(matches("a", "b"), false) + assert_equals(matches("a", "aaa"), false) + + assert_equals(matches("abc", "a..."), true) + assert_equals(matches("abc", "c..."), false) + + assert_equals(matches("abc", "...c"), true) + assert_equals(matches("abc", "...a"), false) + + assert_equals(matches("abc123xyz", "...a..."), true) + assert_equals(matches("abc123xyz", "...b..."), true) + assert_equals(matches("abc123xyz", "...c..."), true) + assert_equals(matches("abc123xyz", "...1..."), true) + assert_equals(matches("abc123xyz", "...2..."), true) + assert_equals(matches("abc123xyz", "...3..."), true) + assert_equals(matches("abc123xyz", "...x..."), true) + assert_equals(matches("abc123xyz", "...y..."), true) + assert_equals(matches("abc123xyz", "...z..."), true) + assert_equals(matches("pattern", "...pattern..."), true) +end) + + local function check_test(c_fname) local exp_fname = c_fname:gsub("%.c$", ".exp") @@ -125,12 +183,12 @@ local function check_test(c_fname) for _, exp_message in ipairs(exp_messages) do local c_comments = c_comments_by_location[exp_message.location] or {} - local expected_comment = + local expected_message = exp_message.message:gsub("/%*", "**"):gsub("%*/", "**") local found = false for i, c_comment in ipairs(c_comments) do - if c_comment ~= "" and expected_comment:find(c_comment, 1, true) then + if c_comment ~= "" and matches(expected_message, c_comment) then c_comments[i] = "" found = true break @@ -139,7 +197,7 @@ local function check_test(c_fname) if not found then print_error("error: %s: missing /* expect+1: %s */", - exp_message.location, expected_comment) + exp_message.location, expected_message) end end Index: src/tests/usr.bin/xlint/lint1/c11_generic_expression.c diff -u src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.11 src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.12 --- src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.11 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: c11_generic_expression.c,v 1.11 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: c11_generic_expression.c,v 1.12 2022/06/17 18:54:53 rillig Exp $ */ # 3 "c11_generic_expression.c" /* @@ -20,14 +20,14 @@ const char * classify_type_without_default(double var) { - /* expect-2: argument 'var' unused */ + /* expect-2: warning: argument 'var' unused in function 'classify_type_without_default' [231] */ return _Generic(var, long double: "long double", long long: "long long", unsigned: "unsigned" ); - /* expect-1: expects to return value [214] */ + /* expect-1: warning: function 'classify_type_without_default' expects to return value [214] */ } /* @@ -36,7 +36,7 @@ classify_type_without_default(double var const char * classify_type_with_default(double var) { - /* expect-2: argument 'var' unused */ + /* expect-2: warning: argument 'var' unused in function 'classify_type_with_default' [231] */ return _Generic(var, long double: "long double", @@ -52,7 +52,7 @@ classify_type_with_default(double var) const char * classify_char(char c) { - /* expect-2: argument 'c' unused */ + /* expect-2: warning: argument 'c' unused in function 'classify_char' [231] */ return _Generic(c, char: "yes", @@ -74,7 +74,7 @@ comma_expression(char first, double seco char: "first", double: 2.0 ); - /* expect+1: without returning value [217] */ + /* expect+1: warning: function comma_expression falls off bottom without returning value [217] */ } /* Index: src/tests/usr.bin/xlint/lint1/msg_249.c diff -u src/tests/usr.bin/xlint/lint1/msg_249.c:1.11 src/tests/usr.bin/xlint/lint1/msg_249.c:1.12 --- src/tests/usr.bin/xlint/lint1/msg_249.c:1.11 Thu Jun 16 21:24:41 2022 +++ src/tests/usr.bin/xlint/lint1/msg_249.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_249.c,v 1.11 2022/06/16 21:24:41 rillig Exp $ */ +/* $NetBSD: msg_249.c,v 1.12 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_249.c" // Test for message: syntax error '%s' [249] @@ -6,7 +6,7 @@ /* * Cover the grammar rule 'top_level_declaration: error T_SEMI'. */ -/* expect+1: syntax error '"' [249] */ +/* expect+1: error: syntax error '"' [249] */ "syntax error in top_level_declaration"; /* XXX: This is necessary to recover the yacc parser. */ @@ -15,7 +15,7 @@ int recover_from_semi; /* * Cover the grammar rule 'top_level_declaration: error T_RBRACE'. */ -/* expect+1: syntax error '"' [249] */ +/* expect+1: error: syntax error '"' [249] */ "syntax error in top_level_declaration"} /* XXX: This is necessary to recover the yacc parser. */ Index: src/tests/usr.bin/xlint/lint1/d_c99_init.c diff -u src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.40 src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.41 --- src/tests/usr.bin/xlint/lint1/d_c99_init.c:1.40 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/d_c99_init.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_c99_init.c,v 1.40 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: d_c99_init.c,v 1.41 2022/06/17 18:54:53 rillig Exp $ */ # 3 "d_c99_init.c" /* @@ -222,11 +222,11 @@ struct geometry geometry = { .pentagons[0].points[4].x = 1, .points[0][0][0] = { 0, 0 }, .points[2][4][1] = {301, 302 }, - /* expect+1: array subscript cannot be > 2: 3 */ + /* expect+1: error: array subscript cannot be > 2: 3 [168] */ .points[3][0][0] = {3001, 3002 }, - /* expect+1: array subscript cannot be > 4: 5 */ + /* expect+1: error: array subscript cannot be > 4: 5 [168] */ .points[0][5][0] = {501, 502 }, - /* expect+1: array subscript cannot be > 1: 2 */ + /* expect+1: error: array subscript cannot be > 1: 2 [168] */ .points[0][0][2] = {21, 22 }, }; @@ -235,13 +235,13 @@ struct ends_with_unnamed_bit_field { int:0; } ends_with_unnamed_bit_field = { 12345, - /* expect+1: too many struct/union initializers */ + /* expect+1: error: too many struct/union initializers [172] */ 23456, }; char prefixed_message[] = { 'E', ':', ' ', - /* expect+1: illegal combination of integer (char) and pointer */ + /* expect+1: warning: illegal combination of integer (char) and pointer (pointer to char) [183] */ "message\n", }; 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.10 src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c:1.11 --- src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c:1.10 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/d_init_array_using_string.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: d_init_array_using_string.c,v 1.10 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: d_init_array_using_string.c,v 1.11 2022/06/17 18:54:53 rillig Exp $ */ # 3 "d_init_array_using_string.c" /* @@ -72,9 +72,9 @@ test_array_initialization_in_struct(void }; struct cs_ws too_many_characters = { - /* expect+1: warning: string literal too long (11) for target array (10) */ + /* expect+1: warning: string literal too long (11) for target array (10) [187] */ "0123456789X", - /* expect+1: warning: string literal too long (11) for target array (10) */ + /* expect+1: warning: string literal too long (11) for target array (10) [187] */ L"0123456789X", }; Index: src/tests/usr.bin/xlint/lint1/gcc_attribute.c diff -u src/tests/usr.bin/xlint/lint1/gcc_attribute.c:1.10 src/tests/usr.bin/xlint/lint1/gcc_attribute.c:1.11 --- src/tests/usr.bin/xlint/lint1/gcc_attribute.c:1.10 Thu Jul 15 21:00:05 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_attribute.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_attribute.c,v 1.10 2021/07/15 21:00:05 rillig Exp $ */ +/* $NetBSD: gcc_attribute.c,v 1.11 2022/06/17 18:54:53 rillig Exp $ */ # 3 "gcc_attribute.c" /* @@ -29,7 +29,7 @@ function_nonnull_list(void *, const void void __attribute__((nonnull(1, 2))) function_nonnull_list(void *, const void *, int); -/* expect+1: syntax error 'unknown_attribute' */ +/* expect+1: error: syntax error 'unknown_attribute' [249] */ void __attribute__((unknown_attribute)) function_with_unknown_attribute(void); @@ -125,5 +125,5 @@ __attribute__((deprecated("d5"))) */ int const_function(int) __attribute__((const)); /* cover 'gcc_attribute_spec: T_QUAL' */ -/* expect+1: syntax error 'volatile' [249] */ +/* expect+1: error: syntax error 'volatile' [249] */ int volatile_function(int) __attribute__((volatile)); Index: src/tests/usr.bin/xlint/lint1/msg_155.c diff -u src/tests/usr.bin/xlint/lint1/msg_155.c:1.10 src/tests/usr.bin/xlint/lint1/msg_155.c:1.11 --- src/tests/usr.bin/xlint/lint1/msg_155.c:1.10 Fri Apr 1 22:28:21 2022 +++ src/tests/usr.bin/xlint/lint1/msg_155.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_155.c,v 1.10 2022/04/01 22:28:21 rillig Exp $ */ +/* $NetBSD: msg_155.c,v 1.11 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_155.c" // Test for message: passing '%s' to incompatible '%s', arg #%d [155] @@ -21,30 +21,30 @@ struct incompatible { void provoke_error_messages(struct incompatible arg) { - /* expect+1: 'int' */ + /* expect+1: ... 'int', ... */ c99_6_7_6_example_a(arg); - /* expect+1: 'pointer to int' */ + /* expect+1: ... 'pointer to int', ... */ c99_6_7_6_example_b(arg); /* C99 says 'array[3] of pointer to int', which is close enough. */ - /* expect+1: 'pointer to pointer to int' */ + /* expect+1: ... 'pointer to pointer to int', ... */ c99_6_7_6_example_c(arg); - /* expect+1: 'pointer to array[3] of int' */ + /* expect+1: ... 'pointer to array[3] of int', ... */ c99_6_7_6_example_d(arg); - /* expect+1: 'pointer to array[unknown_size] of int' */ + /* expect+1: ... 'pointer to array[unknown_size] of int', ... */ c99_6_7_6_example_e(arg); /* Wrong type before decl.c 1.256 from 2022-04-01. */ - /* expect+1: 'pointer to function() returning pointer to int' */ + /* expect+1: ... 'pointer to function() returning pointer to int', ... */ c99_6_7_6_example_f(arg); - /* expect+1: 'pointer to function(void) returning int' */ + /* expect+1: ... 'pointer to function(void) returning int', ... */ c99_6_7_6_example_g(arg); - /* expect+1: 'pointer to const pointer to function(unsigned int, ...) returning int' */ + /* expect+1: ... 'pointer to const pointer to function(unsigned int, ...) returning int', ... */ c99_6_7_6_example_h(arg); } @@ -65,15 +65,15 @@ type_name_of_enum(void) MONDAY } day = MONDAY; - /* expect+1: passing 'enum Day' */ + /* expect+1: ... passing 'enum Day' ... */ sink(day); - /* expect+1: passing 'enum Day' */ + /* expect+1: ... passing 'enum Day' ... */ sink(day + 0); - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ sink(0 + day); - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ sink(0); } Index: src/tests/usr.bin/xlint/lint1/decl.c diff -u src/tests/usr.bin/xlint/lint1/decl.c:1.16 src/tests/usr.bin/xlint/lint1/decl.c:1.17 --- src/tests/usr.bin/xlint/lint1/decl.c:1.16 Sat Jun 11 11:52:13 2022 +++ src/tests/usr.bin/xlint/lint1/decl.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.16 2022/06/11 11:52:13 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.17 2022/06/17 18:54:53 rillig Exp $ */ # 3 "decl.c" /* @@ -39,7 +39,7 @@ qualifier_specifier(void) void declarator_with_prefix_qualifier(void) { - /* expect+1: syntax error 'const' [249] */ + /* expect+1: error: syntax error 'const' [249] */ char a = 1, const b = 2; a = 1; @@ -50,7 +50,7 @@ declarator_with_prefix_qualifier(void) void declarator_with_postfix_qualifier(void) { - /* expect+1: syntax error 'const' [249] */ + /* expect+1: error: syntax error 'const' [249] */ char a = 1, b const = 2; a = 1; @@ -64,11 +64,11 @@ declarators(void) { char *pc = 0, c = 0, **ppc = 0; - /* expect+1: warning: converting 'pointer to char' to incompatible 'pointer to double' */ + /* expect+1: warning: converting 'pointer to char' to incompatible 'pointer to double' for argument 1 [153] */ sink(pc); - /* expect+1: warning: illegal combination of pointer (pointer to double) and integer (char) */ + /* expect+1: warning: illegal combination of pointer (pointer to double) and integer (char), arg #1 [154] */ sink(c); - /* expect+1: converting 'pointer to pointer to char' to incompatible 'pointer to double' */ + /* expect+1: warning: converting 'pointer to pointer to char' to incompatible 'pointer to double' for argument 1 [153] */ sink(ppc); } @@ -76,7 +76,7 @@ _Bool enum_error_handling(void) { enum { - /* expect+1: syntax error '"' [249] */ + /* expect+1: error: syntax error '"' [249] */ "error 1" : /* still the same error */ , /* back on track */ @@ -160,11 +160,11 @@ unsigned long sizes = sizeof(const typeof(unnamed_struct)); /* expect+2: error: old style declaration; add 'int' [1] */ -/* expect+1: syntax error 'int' [249] */ +/* expect+1: error: syntax error 'int' [249] */ thread int thread_int; __thread int thread_int; /* expect+2: error: old style declaration; add 'int' [1] */ -/* expect+1: syntax error 'int' [249] */ +/* expect+1: error: syntax error 'int' [249] */ __thread__ int thread_int; /* expect+4: error: old style declaration; add 'int' [1] */ Index: src/tests/usr.bin/xlint/lint1/decl_direct_abstract.c diff -u src/tests/usr.bin/xlint/lint1/decl_direct_abstract.c:1.6 src/tests/usr.bin/xlint/lint1/decl_direct_abstract.c:1.7 --- src/tests/usr.bin/xlint/lint1/decl_direct_abstract.c:1.6 Fri Apr 1 23:16:32 2022 +++ src/tests/usr.bin/xlint/lint1/decl_direct_abstract.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: decl_direct_abstract.c,v 1.6 2022/04/01 23:16:32 rillig Exp $ */ +/* $NetBSD: decl_direct_abstract.c,v 1.7 2022/06/17 18:54:53 rillig Exp $ */ # 3 "decl_direct_abstract.c" /* @@ -19,7 +19,7 @@ char func0001(short (*)(long)); /* GCC says 'char (*)(short int (*)(long int))' */ /* Clang says 'char (short (*)(long))' */ /* cdecl says 'function (pointer to function (long) returning short) returning char' */ -/* expect+1: 'pointer to function(pointer to function(long) returning short) returning char' */ +/* expect+1: error: cannot initialize 'double' from 'pointer to function(pointer to function(long) returning short) returning char' [185] */ double type_of_func0001 = func0001; char func0002(short *(long)); @@ -28,7 +28,7 @@ char func0002(short *(long)); /* Clang says 'char (short *(*)(long))' */ /* cdecl says 'syntax error' */ /* FIXME: lint is wrong, it discards the 'short *' */ -/* expect+1: 'pointer to function(long) returning char' */ +/* expect+1: error: cannot initialize 'double' from 'pointer to function(long) returning char' [185] */ double type_of_func0002 = func0002; void c99_6_7_6_example_a(int); @@ -44,22 +44,22 @@ struct incompatible { int member; } x; -/* expect+1: 'pointer to function(int) returning void' */ +/* expect+1: ... 'pointer to function(int) returning void' ... */ double type_of_c99_6_7_6_example_a = c99_6_7_6_example_a; -/* expect+1: 'pointer to function(pointer to int) returning void' */ +/* expect+1: ... 'pointer to function(pointer to int) returning void' ... */ double type_of_c99_6_7_6_example_b = c99_6_7_6_example_b; -/* expect+1: 'pointer to function(pointer to pointer to int) returning void' */ +/* expect+1: ... 'pointer to function(pointer to pointer to int) returning void' ... */ double type_of_c99_6_7_6_example_c = c99_6_7_6_example_c; -/* expect+1: 'pointer to function(pointer to array[3] of int) returning void' */ +/* expect+1: ... 'pointer to function(pointer to array[3] of int) returning void' ... */ double type_of_c99_6_7_6_example_d = c99_6_7_6_example_d; -/* expect+1: 'pointer to function(pointer to array[unknown_size] of int) returning void' */ +/* expect+1: ... 'pointer to function(pointer to array[unknown_size] of int) returning void' ... */ double type_of_c99_6_7_6_example_e = c99_6_7_6_example_e; /* Wrong type before decl.c 1.256 from 2022-04-01. */ -/* expect+1: 'pointer to function(pointer to function() returning pointer to int) returning void' */ +/* expect+1: ... 'pointer to function(pointer to function() returning pointer to int) returning void' ... */ double type_of_c99_6_7_6_example_f = c99_6_7_6_example_f; -/* expect+1: 'pointer to function(pointer to function(void) returning int) returning void' */ +/* expect+1: ... 'pointer to function(pointer to function(void) returning int) returning void' ... */ double type_of_c99_6_7_6_example_g = c99_6_7_6_example_g; -/* expect+1: 'pointer to function(pointer to const pointer to function(unsigned int, ...) returning int) returning void' */ +/* expect+1: ... 'pointer to function(pointer to const pointer to function(unsigned int, ...) returning int) returning void' ... */ double type_of_c99_6_7_6_example_h = c99_6_7_6_example_h; void int_array(int[]); Index: src/tests/usr.bin/xlint/lint1/msg_343.c diff -u src/tests/usr.bin/xlint/lint1/msg_343.c:1.6 src/tests/usr.bin/xlint/lint1/msg_343.c:1.7 --- src/tests/usr.bin/xlint/lint1/msg_343.c:1.6 Fri Jun 17 06:59:16 2022 +++ src/tests/usr.bin/xlint/lint1/msg_343.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_343.c,v 1.6 2022/06/17 06:59:16 rillig Exp $ */ +/* $NetBSD: msg_343.c,v 1.7 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_343.c" /* Test for message: static array size is a C11 extension [343] */ @@ -9,7 +9,7 @@ void takes_int_pointer(int []); void takes_int_pointer_with_ignored_size(int [3]); /* expect+1: error: static array size is a C11 extension [343] */ void takes_int_array(int[static 3]); -/* expect+1: syntax error '3' */ +/* expect+1: error: syntax error '3' [249] */ void takes_volatile_int_array(int[volatile 3]); int @@ -32,11 +32,11 @@ returns_int_array(int a[static 3]) } int -/* expect+1: syntax error '3' */ +/* expect+1: error: syntax error '3' [249] */ returns_volatile_int_array(int a[volatile 3]) { - /* expect+2: cannot dereference non-pointer type */ - /* expect+1: expects to return value */ + /* expect+2: error: cannot dereference non-pointer type [96] */ + /* expect+1: ... expects to return value [214] */ return a[0]; } Index: src/tests/usr.bin/xlint/lint1/decl_enum_c90.c diff -u src/tests/usr.bin/xlint/lint1/decl_enum_c90.c:1.1 src/tests/usr.bin/xlint/lint1/decl_enum_c90.c:1.2 --- src/tests/usr.bin/xlint/lint1/decl_enum_c90.c:1.1 Thu Jul 15 21:00:05 2021 +++ src/tests/usr.bin/xlint/lint1/decl_enum_c90.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: decl_enum_c90.c,v 1.1 2021/07/15 21:00:05 rillig Exp $ */ +/* $NetBSD: decl_enum_c90.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "decl_enum_c90.c" /* @@ -10,4 +10,4 @@ enum { A, }; -/* expect-1: trailing ',' prohibited in enum declaration [54] */ +/* expect-1: error: trailing ',' prohibited in enum declaration [54] */ Index: src/tests/usr.bin/xlint/lint1/expr_binary_trad.c diff -u src/tests/usr.bin/xlint/lint1/expr_binary_trad.c:1.1 src/tests/usr.bin/xlint/lint1/expr_binary_trad.c:1.2 --- src/tests/usr.bin/xlint/lint1/expr_binary_trad.c:1.1 Sun Aug 1 16:29:28 2021 +++ src/tests/usr.bin/xlint/lint1/expr_binary_trad.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: expr_binary_trad.c,v 1.1 2021/08/01 16:29:28 rillig Exp $ */ +/* $NetBSD: expr_binary_trad.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "expr_binary_trad.c" /* @@ -21,47 +21,47 @@ void cover_balance() { - /* expect+1: 'pointer to char' */ + /* expect+1: ... 'pointer to char' ... */ sink = (char *)0 + 0; - /* expect+1: 'pointer to char' */ + /* expect+1: ... 'pointer to char' ... */ sink = 0 + (char *)0; - /* expect+1: 'int' */ + /* expect+1: ... 'int' ... */ sink = 1 + 1; - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink = 0.0 + 0; - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink = 0 + 0.0; - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink = 0.0 + (float)0.0; - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink = (float)0.0 + 0.0; /* * In traditional C, 'float' gets promoted to 'double' before * applying the usual arithmetic conversions; see 'promote'. */ - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink = (float)0.0 + 0; - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink = 0 + (float)0.0; - /* expect+1: 'unsigned long' */ + /* expect+1: ... 'unsigned long' ... */ sink = (unsigned long)0 + 0; - /* expect+1: 'unsigned long' */ + /* expect+1: ... 'unsigned long' ... */ sink = 0 + (unsigned long)0; - /* expect+1: 'unsigned long' */ + /* expect+1: ... 'unsigned long' ... */ sink = (unsigned long)0 + (long)0; - /* expect+1: 'unsigned long' */ + /* expect+1: ... 'unsigned long' ... */ sink = (long)0 + (unsigned long)0; /* * In traditional C, if one of the operands is unsigned, the result * is unsigned as well. */ - /* expect+1: 'unsigned long' */ + /* expect+1: ... 'unsigned long' ... */ sink = (unsigned)0 + (long)0; } Index: src/tests/usr.bin/xlint/lint1/lex_integer_binary.c diff -u src/tests/usr.bin/xlint/lint1/lex_integer_binary.c:1.1 src/tests/usr.bin/xlint/lint1/lex_integer_binary.c:1.2 --- src/tests/usr.bin/xlint/lint1/lex_integer_binary.c:1.1 Tue Jul 13 19:38:10 2021 +++ src/tests/usr.bin/xlint/lint1/lex_integer_binary.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_integer_binary.c,v 1.1 2021/07/13 19:38:10 rillig Exp $ */ +/* $NetBSD: lex_integer_binary.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "lex_integer_binary.c" /* @@ -25,6 +25,6 @@ binary_literal(void) * Even though it would be useful for binary literals, GCC does not * support underscores to separate the digit groups. */ - /* expect+1: syntax error '_0000_0101_1010' [249] */ + /* expect+1: error: syntax error '_0000_0101_1010' [249] */ sink(0b1111_0000_0101_1010); } Index: src/tests/usr.bin/xlint/lint1/msg_341.c diff -u src/tests/usr.bin/xlint/lint1/msg_341.c:1.1 src/tests/usr.bin/xlint/lint1/msg_341.c:1.2 --- src/tests/usr.bin/xlint/lint1/msg_341.c:1.1 Mon Apr 5 02:05:47 2021 +++ src/tests/usr.bin/xlint/lint1/msg_341.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_341.c,v 1.1 2021/04/05 02:05:47 rillig Exp $ */ +/* $NetBSD: msg_341.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_341.c" // Test for message: argument to '%s' must be 'unsigned char' or EOF, not '%s' [341] @@ -20,7 +20,7 @@ void function_call_char(char c) { - /* expect+1: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' */ + /* expect+1: warning: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' [341] */ (isspace)(c); /* This is the only allowed form. */ @@ -29,10 +29,10 @@ function_call_char(char c) /* The cast to 'int' is redundant, it doesn't hurt though. */ isspace((int)(unsigned char)c); - /* expect+1: argument to 'isspace' must be cast to 'unsigned char', not to 'int' */ + /* expect+1: warning: argument to 'isspace' must be cast to 'unsigned char', not to 'int' [342] */ isspace((int)c); - /* expect+1: argument to 'isspace' must be cast to 'unsigned char', not to 'unsigned int' */ + /* expect+1: warning: argument to 'isspace' must be cast to 'unsigned char', not to 'unsigned int' [342] */ isspace((unsigned int)c); } @@ -63,15 +63,15 @@ void macro_invocation_NetBSD(char c) { - /* expect+1: argument to 'function from <ctype.h>' must be 'unsigned char' or EOF, not 'char' */ + /* expect+1: warning: argument to 'function from <ctype.h>' must be 'unsigned char' or EOF, not 'char' [341] */ sink(((int)((_ctype_tab_ + 1)[(c)] & 0x0040))); /* This is the only allowed form. */ sink(((int)((_ctype_tab_ + 1)[((unsigned char)c)] & 0x0040))); - /* expect+1: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'int' */ + /* expect+1: warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'int' [342] */ sink(((int)((_ctype_tab_ + 1)[((int)c)] & 0x0040))); - /* expect+1: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'unsigned int' */ + /* expect+1: warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'unsigned int' [342] */ sink(((int)((_ctype_tab_ + 1)[((unsigned int)c)] & 0x0040))); } Index: src/tests/usr.bin/xlint/lint1/msg_344.c diff -u src/tests/usr.bin/xlint/lint1/msg_344.c:1.1 src/tests/usr.bin/xlint/lint1/msg_344.c:1.2 --- src/tests/usr.bin/xlint/lint1/msg_344.c:1.1 Sun May 16 11:11:37 2021 +++ src/tests/usr.bin/xlint/lint1/msg_344.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_344.c,v 1.1 2021/05/16 11:11:37 rillig Exp $ */ +/* $NetBSD: msg_344.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_344.c" // Test for message: bit-field of type plain 'int' has implementation-defined signedness [344] @@ -16,7 +16,7 @@ * allows typedef-types for bit-fields. */ struct example { - /* expect+1: 344 */ + /* expect+1: warning: bit-field of type plain 'int' has implementation-defined signedness [344] */ int plain_int: 1; signed int signed_int: 1; Index: src/tests/usr.bin/xlint/lint1/parse_stmt_error.c diff -u src/tests/usr.bin/xlint/lint1/parse_stmt_error.c:1.1 src/tests/usr.bin/xlint/lint1/parse_stmt_error.c:1.2 --- src/tests/usr.bin/xlint/lint1/parse_stmt_error.c:1.1 Sun Jul 25 09:29:20 2021 +++ src/tests/usr.bin/xlint/lint1/parse_stmt_error.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: parse_stmt_error.c,v 1.1 2021/07/25 09:29:20 rillig Exp $ */ +/* $NetBSD: parse_stmt_error.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "parse_stmt_error.c" /* @@ -13,7 +13,7 @@ cover_selection_statement_else(_Bool con if (cond) do_nothing(); else - /* expect+1: syntax error ']' [249] */ + /* expect+1: error: syntax error ']' [249] */ ]; } @@ -21,6 +21,6 @@ void cover_selection_statement_switch(int x) { switch (x) - /* expect+1: syntax error ']' [249] */ + /* expect+1: error: syntax error ']' [249] */ ]; } Index: src/tests/usr.bin/xlint/lint1/parse_stmt_iter_error.c diff -u src/tests/usr.bin/xlint/lint1/parse_stmt_iter_error.c:1.1 src/tests/usr.bin/xlint/lint1/parse_stmt_iter_error.c:1.2 --- src/tests/usr.bin/xlint/lint1/parse_stmt_iter_error.c:1.1 Sun Jul 25 09:29:20 2021 +++ src/tests/usr.bin/xlint/lint1/parse_stmt_iter_error.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: parse_stmt_iter_error.c,v 1.1 2021/07/25 09:29:20 rillig Exp $ */ +/* $NetBSD: parse_stmt_iter_error.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "parse_stmt_iter_error.c" /* @@ -11,7 +11,7 @@ void cover_iteration_statement_while(_Bool cond) { while (cond) - /* expect+1: syntax error ']' [249] */ + /* expect+1: error: syntax error ']' [249] */ ]; } @@ -19,7 +19,7 @@ void cover_iteration_statement_do(void) { do - /* expect+1: syntax error ']' [249] */ + /* expect+1: error: syntax error ']' [249] */ ]; } @@ -27,6 +27,6 @@ void cover_iteration_statement_for(void) { for (int i = 0; i < 10; i++) - /* expect+1: syntax error ']' [249] */ + /* expect+1: error: syntax error ']' [249] */ ]; } Index: src/tests/usr.bin/xlint/lint1/stmt_goto.c diff -u src/tests/usr.bin/xlint/lint1/stmt_goto.c:1.1 src/tests/usr.bin/xlint/lint1/stmt_goto.c:1.2 --- src/tests/usr.bin/xlint/lint1/stmt_goto.c:1.1 Wed Jul 14 20:39:13 2021 +++ src/tests/usr.bin/xlint/lint1/stmt_goto.c Fri Jun 17 18:54:53 2022 @@ -1,11 +1,11 @@ -/* $NetBSD: stmt_goto.c,v 1.1 2021/07/14 20:39:13 rillig Exp $ */ +/* $NetBSD: stmt_goto.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "stmt_goto.c" /* * Tests for the 'goto' statement. */ -/* expect+1: syntax error 'goto' [249] */ +/* expect+1: error: syntax error 'goto' [249] */ goto invalid_at_top_level; void @@ -13,7 +13,7 @@ function(void) { goto label; label: - /* expect+1: syntax error '"' [249] */ + /* expect+1: error: syntax error '"' [249] */ goto "string"; /* Reset the error handling of the parser. */ @@ -21,6 +21,6 @@ label: ok: /* Numeric labels work in Pascal, but not in C. */ - /* expect+1: syntax error '12345' [249] */ + /* expect+1: error: syntax error '12345' [249] */ goto 12345; } Index: src/tests/usr.bin/xlint/lint1/stmt_if.c diff -u src/tests/usr.bin/xlint/lint1/stmt_if.c:1.1 src/tests/usr.bin/xlint/lint1/stmt_if.c:1.2 --- src/tests/usr.bin/xlint/lint1/stmt_if.c:1.1 Sun Jul 11 18:58:13 2021 +++ src/tests/usr.bin/xlint/lint1/stmt_if.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: stmt_if.c,v 1.1 2021/07/11 18:58:13 rillig Exp $ */ +/* $NetBSD: stmt_if.c,v 1.2 2022/06/17 18:54:53 rillig Exp $ */ # 3 "stmt_if.c" /* @@ -22,7 +22,7 @@ dangling_else(int x) */ else println("not positive"); - /* expect+1: syntax error 'else' [249] */ + /* expect+1: error: syntax error 'else' [249] */ else println("syntax error"); } Index: src/tests/usr.bin/xlint/lint1/decl_struct_member.c diff -u src/tests/usr.bin/xlint/lint1/decl_struct_member.c:1.14 src/tests/usr.bin/xlint/lint1/decl_struct_member.c:1.15 --- src/tests/usr.bin/xlint/lint1/decl_struct_member.c:1.14 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/decl_struct_member.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: decl_struct_member.c,v 1.14 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: decl_struct_member.c,v 1.15 2022/06/17 18:54:53 rillig Exp $ */ # 3 "decl_struct_member.c" struct multi_attributes { @@ -87,4 +87,4 @@ struct { * assertion "t == NOTSPEC" failed in end_type at decl.c:774 */ }; -/* expect+1: cannot recover from previous errors */ +/* expect+1: error: cannot recover from previous errors [224] */ Index: src/tests/usr.bin/xlint/lint1/expr_binary.c diff -u src/tests/usr.bin/xlint/lint1/expr_binary.c:1.5 src/tests/usr.bin/xlint/lint1/expr_binary.c:1.6 --- src/tests/usr.bin/xlint/lint1/expr_binary.c:1.5 Sun Aug 1 14:51:41 2021 +++ src/tests/usr.bin/xlint/lint1/expr_binary.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: expr_binary.c,v 1.5 2021/08/01 14:51:41 rillig Exp $ */ +/* $NetBSD: expr_binary.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "expr_binary.c" /* @@ -20,19 +20,19 @@ void sink(struct incompatible); void cover_balance(void) { - /* expect+1: 'pointer to void' */ + /* expect+1: ... 'pointer to void' ... */ sink((void *)0 + 0); - /* expect+1: 'pointer to void' */ + /* expect+1: ... 'pointer to void' ... */ sink(0 + (void *)0); - /* expect+1: 'int' */ + /* expect+1: ... 'int' ... */ sink(1 + 1); - /* expect+1: 'const int' */ + /* expect+1: ... 'const int' ... */ sink((const int)1 + (volatile int)1); - /* expect+1: 'volatile int' */ + /* expect+1: ... 'volatile int' ... */ sink((volatile int)1 + (const int)1); long double _Complex cldbl = 0.0; @@ -41,89 +41,89 @@ cover_balance(void) /* expect+1: error: invalid type for _Complex [308] */ _Complex invalid = 0.0; - /* expect+1: 'long double _Complex' */ + /* expect+1: ... 'long double _Complex' ... */ sink(cldbl + 0); - /* expect+1: 'long double _Complex' */ + /* expect+1: ... 'long double _Complex' ... */ sink(0 + cldbl); - /* expect+1: 'long double _Complex' */ + /* expect+1: ... 'long double _Complex' ... */ sink(cldbl + cdbl); - /* expect+1: 'long double _Complex' */ + /* expect+1: ... 'long double _Complex' ... */ sink(cdbl + cldbl); - /* expect+1: 'double _Complex' */ + /* expect+1: ... 'double _Complex' ... */ sink(cdbl + 0); - /* expect+1: 'double _Complex' */ + /* expect+1: ... 'double _Complex' ... */ sink(0 + cdbl); - /* expect+1: 'double _Complex' */ + /* expect+1: ... 'double _Complex' ... */ sink(cdbl + cflt); - /* expect+1: 'double _Complex' */ + /* expect+1: ... 'double _Complex' ... */ sink(cflt + cdbl); - /* expect+1: 'float _Complex' */ + /* expect+1: ... 'float _Complex' ... */ sink(cflt + 0); - /* expect+1: 'float _Complex' */ + /* expect+1: ... 'float _Complex' ... */ sink(0 + cflt); - /* expect+1: 'float _Complex' */ + /* expect+1: ... 'float _Complex' ... */ sink(cflt + (__uint128_t)0); - /* expect+1: 'float _Complex' */ + /* expect+1: ... 'float _Complex' ... */ sink((__uint128_t)0 + cflt); /* * The type specifier '_Complex' is only used during parsing, it does * not make it to the expression. */ - /* expect+1: 'double _Complex' */ + /* expect+1: ... 'double _Complex' ... */ sink(invalid + 0); - /* expect+1: 'long double' */ + /* expect+1: ... 'long double' ... */ sink(0.0L + 0); - /* expect+1: 'long double' */ + /* expect+1: ... 'long double' ... */ sink(0 + 0.0L); - /* expect+1: 'long double' */ + /* expect+1: ... 'long double' ... */ sink(0.0L + 0.0); - /* expect+1: 'long double' */ + /* expect+1: ... 'long double' ... */ sink(0.0 + 0.0L); - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink(0.0 + 0); - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink(0 + 0.0); - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink(0.0 + 0.0f); - /* expect+1: 'double' */ + /* expect+1: ... 'double' ... */ sink(0.0f + 0.0); - /* expect+1: 'float' */ + /* expect+1: ... 'float' ... */ sink(0.0f + 0); - /* expect+1: 'float' */ + /* expect+1: ... 'float' ... */ sink(0 + 0.0f); - /* expect+1: 'float' */ + /* expect+1: ... 'float' ... */ sink(0.0f + (__uint128_t)0); - /* expect+1: 'float' */ + /* expect+1: ... 'float' ... */ sink((__uint128_t)0 + 0.0f); - /* expect+1: 'unsigned long long' */ + /* expect+1: ... 'unsigned long long' ... */ sink(0ULL + 0); - /* expect+1: 'unsigned long long' */ + /* expect+1: ... 'unsigned long long' ... */ sink(0 + 0ULL); - /* expect+1: 'unsigned long long' */ + /* expect+1: ... 'unsigned long long' ... */ sink(0ULL + 0LL); - /* expect+1: 'unsigned long long' */ + /* expect+1: ... 'unsigned long long' ... */ sink(0LL + 0ULL); /* If the bit-width is the same, prefer the unsigned variant. */ - /* expect+1: 'unsigned long long' */ + /* expect+1: ... 'unsigned long long' ... */ sink(0UL + 0LL); - /* expect+1: 'unsigned long long' */ + /* expect+1: ... 'unsigned long long' ... */ sink(0LL + 0UL); /* * Ensure that __int128_t is listed in the integer ranks. This table * only becomes relevant when both operands have the same width. */ - /* expect+1: '__uint128_t' */ + /* expect+1: ... '__uint128_t' ... */ sink((__uint128_t)1 + (__int128_t)1); - /* expect+1: '__uint128_t' */ + /* expect+1: ... '__uint128_t' ... */ sink((__int128_t)1 + (__uint128_t)1); } Index: src/tests/usr.bin/xlint/lint1/gcc_init_compound_literal.c diff -u src/tests/usr.bin/xlint/lint1/gcc_init_compound_literal.c:1.5 src/tests/usr.bin/xlint/lint1/gcc_init_compound_literal.c:1.6 --- src/tests/usr.bin/xlint/lint1/gcc_init_compound_literal.c:1.5 Sat Jun 11 11:52:13 2022 +++ src/tests/usr.bin/xlint/lint1/gcc_init_compound_literal.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_init_compound_literal.c,v 1.5 2022/06/11 11:52:13 rillig Exp $ */ +/* $NetBSD: gcc_init_compound_literal.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "gcc_init_compound_literal.c" /* @@ -37,7 +37,7 @@ struct node { * Initial tree for representing the decisions in the classic number guessing * game often used in teaching the basics of programming. */ -/* expect+1: static variable 'guess' unused */ +/* expect+1: warning: static variable 'guess' unused [226] */ static const struct node guess = { 50, &(struct node){ Index: src/tests/usr.bin/xlint/lint1/lex_char.c diff -u src/tests/usr.bin/xlint/lint1/lex_char.c:1.5 src/tests/usr.bin/xlint/lint1/lex_char.c:1.6 --- src/tests/usr.bin/xlint/lint1/lex_char.c:1.5 Fri Apr 1 21:12:42 2022 +++ src/tests/usr.bin/xlint/lint1/lex_char.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_char.c,v 1.5 2022/04/01 21:12:42 rillig Exp $ */ +/* $NetBSD: lex_char.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "lex_char.c" /* @@ -12,7 +12,7 @@ void sink(char); void test(void) { - /* expect+1: empty character constant */ + /* expect+1: error: empty character constant [73] */ sink(''); sink('a'); @@ -20,12 +20,12 @@ test(void) sink('\0'); /* UTF-8 */ - /* expect+2: multi-character character constant */ - /* expect+1: conversion of 'int' to 'char' is out of range */ + /* expect+2: warning: multi-character character constant [294] */ + /* expect+1: warning: conversion of 'int' to 'char' is out of range, arg #1 [295] */ sink('ä'); /* GCC extension */ - /* expect+1: dubious escape \e */ + /* expect+1: warning: dubious escape \e [79] */ sink('\e'); /* since C99 */ @@ -34,7 +34,7 @@ test(void) /* octal */ sink('\177'); - /* expect+1: empty character constant */ + /* expect+1: error: empty character constant [73] */ sink(''); /* U+0007 alarm/bell */ Index: src/tests/usr.bin/xlint/lint1/msg_034.c diff -u src/tests/usr.bin/xlint/lint1/msg_034.c:1.5 src/tests/usr.bin/xlint/lint1/msg_034.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_034.c:1.5 Sun May 16 11:11:37 2021 +++ src/tests/usr.bin/xlint/lint1/msg_034.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_034.c,v 1.5 2021/05/16 11:11:37 rillig Exp $ */ +/* $NetBSD: msg_034.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_034.c" // Test for message: nonportable bit-field type '%s' [34] @@ -17,10 +17,10 @@ * typedef-types for bit-fields. */ struct example { - /* expect+1: 34 */ + /* expect+1: warning: nonportable bit-field type 'unsigned short' [34] */ unsigned short ushort: 1; - /* expect+1: 344 */ + /* expect+1: warning: bit-field of type plain 'int' has implementation-defined signedness [344] */ int plain_int: 1; signed int signed_int: 1; Index: src/tests/usr.bin/xlint/lint1/msg_066.c diff -u src/tests/usr.bin/xlint/lint1/msg_066.c:1.5 src/tests/usr.bin/xlint/lint1/msg_066.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_066.c:1.5 Thu Aug 26 19:23:25 2021 +++ src/tests/usr.bin/xlint/lint1/msg_066.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_066.c,v 1.5 2021/08/26 19:23:25 rillig Exp $ */ +/* $NetBSD: msg_066.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_066.c" // Test for message: syntax requires ';' after last struct/union member [66] @@ -12,5 +12,5 @@ struct number { int value }; -/* expect-1: syntax error '}' [249] */ +/* expect-1: error: syntax error '}' [249] */ /* expect+1: error: cannot recover from previous errors [224] */ Index: src/tests/usr.bin/xlint/lint1/msg_077.c diff -u src/tests/usr.bin/xlint/lint1/msg_077.c:1.5 src/tests/usr.bin/xlint/lint1/msg_077.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_077.c:1.5 Wed Jun 15 20:18:31 2022 +++ src/tests/usr.bin/xlint/lint1/msg_077.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_077.c,v 1.5 2022/06/15 20:18:31 rillig Exp $ */ +/* $NetBSD: msg_077.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_077.c" /* Test for message: bad octal digit %c [77] */ @@ -23,5 +23,5 @@ char single_digit = '\8'; * anyway. * https://mail-index.netbsd.org/tech-toolchain/2021/03/16/msg003933.html */ -/* expect+1: multi-character character constant [294] */ +/* expect+1: warning: multi-character character constant [294] */ char several_digits = '\08'; Index: src/tests/usr.bin/xlint/lint1/msg_118.c diff -u src/tests/usr.bin/xlint/lint1/msg_118.c:1.5 src/tests/usr.bin/xlint/lint1/msg_118.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_118.c:1.5 Tue May 4 19:57:56 2021 +++ src/tests/usr.bin/xlint/lint1/msg_118.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_118.c,v 1.5 2021/05/04 19:57:56 rillig Exp $ */ +/* $NetBSD: msg_118.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_118.c" /* Test for message: semantics of '%s' change in ANSI C; use explicit cast [118] */ @@ -14,7 +14,7 @@ int_shl_uint(int left, unsigned int righ int int_shr_uint(int left, unsigned int right) { - /* expect+1: semantics of '>>' change in ANSI C */ + /* expect+1: warning: semantics of '>>' change in ANSI C; use explicit cast [118] */ return left >> right; } Index: src/tests/usr.bin/xlint/lint1/msg_189.c diff -u src/tests/usr.bin/xlint/lint1/msg_189.c:1.5 src/tests/usr.bin/xlint/lint1/msg_189.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_189.c:1.5 Thu Aug 26 19:23:25 2021 +++ src/tests/usr.bin/xlint/lint1/msg_189.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_189.c,v 1.5 2021/08/26 19:23:25 rillig Exp $ */ +/* $NetBSD: msg_189.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_189.c" /* Test for message: assignment of struct/union illegal in traditional C [189] */ @@ -17,5 +17,5 @@ example() a.member = 3; b = a; /* message 189 is not triggered anymore */ - /* expect-1: 'b' set but not used in function 'example' */ + /* expect-1: warning: 'b' set but not used in function 'example' [191] */ } Index: src/tests/usr.bin/xlint/lint1/msg_232.c diff -u src/tests/usr.bin/xlint/lint1/msg_232.c:1.5 src/tests/usr.bin/xlint/lint1/msg_232.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_232.c:1.5 Sun Jul 11 19:30:56 2021 +++ src/tests/usr.bin/xlint/lint1/msg_232.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_232.c,v 1.5 2021/07/11 19:30:56 rillig Exp $ */ +/* $NetBSD: msg_232.c,v 1.6 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_232.c" // Test for message: label '%s' unused in function '%s' [232] @@ -7,7 +7,7 @@ void example(void) { goto used_label; - /* expect+1: label 'unused_label' unused in function 'example' [232] */ + /* expect+1: warning: label 'unused_label' unused in function 'example' [232] */ unused_label: return; used_label: Index: src/tests/usr.bin/xlint/lint1/expr_precedence.c diff -u src/tests/usr.bin/xlint/lint1/expr_precedence.c:1.8 src/tests/usr.bin/xlint/lint1/expr_precedence.c:1.9 --- src/tests/usr.bin/xlint/lint1/expr_precedence.c:1.8 Tue Nov 16 17:41:23 2021 +++ src/tests/usr.bin/xlint/lint1/expr_precedence.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: expr_precedence.c,v 1.8 2021/11/16 17:41:23 rillig Exp $ */ +/* $NetBSD: expr_precedence.c,v 1.9 2022/06/17 18:54:53 rillig Exp $ */ # 3 "expr_precedence.c" /* @@ -31,7 +31,7 @@ void __attribute__((format(printf, * See lex.c, function 'search', keyword 'in_gcc_attribute'. */ /* expect+2: error: 'var' undefined [99] */ - /* expect+1: syntax error '=' [249] */ + /* expect+1: error: syntax error '=' [249] */ var = 1, /* Syntactically ok, must be a constant expression though. */ var > 0 ? 2 : 1))) Index: src/tests/usr.bin/xlint/lint1/parse_type_name.c diff -u src/tests/usr.bin/xlint/lint1/parse_type_name.c:1.8 src/tests/usr.bin/xlint/lint1/parse_type_name.c:1.9 --- src/tests/usr.bin/xlint/lint1/parse_type_name.c:1.8 Fri Apr 1 23:16:32 2022 +++ src/tests/usr.bin/xlint/lint1/parse_type_name.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: parse_type_name.c,v 1.8 2022/04/01 23:16:32 rillig Exp $ */ +/* $NetBSD: parse_type_name.c,v 1.9 2022/06/17 18:54:53 rillig Exp $ */ # 3 "parse_type_name.c" /* @@ -114,15 +114,15 @@ cover_abstract_decl_param_list(void) sink(sizeof(void (*)(void) __attribute__(()) __attribute__(()))); /* cover 'abstract_decl_lparen error T_RPAREN type_attribute_opt' */ - /* expect+1: syntax error 'goto' [249] */ + /* expect+1: error: syntax error 'goto' [249] */ sink(sizeof(void (*)(goto))); - /* expect+1: syntax error 'goto' [249] */ + /* expect+1: error: syntax error 'goto' [249] */ sink(sizeof(void (*)(goto) __attribute__(()))); /* * XXX: The grammar allows only a single type_attribute_opt. * All following __attribute__ come from direct_abstract_declarator. */ - /* expect+1: syntax error 'goto' [249] */ + /* expect+1: error: syntax error 'goto' [249] */ sink(sizeof(void (*)(goto) __attribute__(()) __attribute__(()))); } Index: src/tests/usr.bin/xlint/lint1/feat_stacktrace.c diff -u src/tests/usr.bin/xlint/lint1/feat_stacktrace.c:1.2 src/tests/usr.bin/xlint/lint1/feat_stacktrace.c:1.3 --- src/tests/usr.bin/xlint/lint1/feat_stacktrace.c:1.2 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/feat_stacktrace.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: feat_stacktrace.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: feat_stacktrace.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "feat_stacktrace.c" /* @@ -23,7 +23,7 @@ * the main file as well. */ # 1 "common_int_types.h" 1 3 4 -/* expect+1: typedef declares no type name [72] */ +/* expect+1: warning: 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 Index: src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c diff -u src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c:1.2 src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c:1.3 --- src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c:1.2 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/gcc_attribute_aligned.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_attribute_aligned.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: gcc_attribute_aligned.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "gcc_attribute_aligned.c" /* @@ -40,6 +40,6 @@ struct { unsigned int sizeof_fpacc87: sizeof(struct fpacc87) == 10 ? 1 : -1; /* FIXME: @4 2 + @4 2 + @4 2 + @4 8 + @4 8 + @2 (8 * 10) == 108 */ - /* expect+1: illegal bit-field size: 255 */ + /* expect+1: error: illegal bit-field size: 255 [36] */ unsigned int sizeof_save87: sizeof(struct save87) == 108 ? 1 : -1; }; Index: src/tests/usr.bin/xlint/lint1/gcc_typeof_after_statement.c diff -u src/tests/usr.bin/xlint/lint1/gcc_typeof_after_statement.c:1.2 src/tests/usr.bin/xlint/lint1/gcc_typeof_after_statement.c:1.3 --- src/tests/usr.bin/xlint/lint1/gcc_typeof_after_statement.c:1.2 Mon May 3 05:24:44 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_typeof_after_statement.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_typeof_after_statement.c,v 1.2 2021/05/03 05:24:44 rillig Exp $ */ +/* $NetBSD: gcc_typeof_after_statement.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "gcc_typeof_after_statement.c" /* @@ -18,5 +18,5 @@ example(void **ptr) } /* Just to keep the .exp file. */ -/* expect+1: static function unused declared but not defined */ +/* expect+1: warning: static function unused declared but not defined [290] */ static void unused(void); Index: src/tests/usr.bin/xlint/lint1/lex_wide_char.c diff -u src/tests/usr.bin/xlint/lint1/lex_wide_char.c:1.2 src/tests/usr.bin/xlint/lint1/lex_wide_char.c:1.3 --- src/tests/usr.bin/xlint/lint1/lex_wide_char.c:1.2 Sun Jun 20 18:38:12 2021 +++ src/tests/usr.bin/xlint/lint1/lex_wide_char.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_wide_char.c,v 1.2 2021/06/20 18:38:12 rillig Exp $ */ +/* $NetBSD: lex_wide_char.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "lex_wide_char.c" /* @@ -12,7 +12,7 @@ void sink(int); void test(void) { - /* expect+1: empty character constant */ + /* expect+1: error: empty character constant [73] */ sink(L''); sink(L'a'); @@ -20,11 +20,11 @@ test(void) sink(L'\0'); /* UTF-8 */ - /* expect+1: too many characters in character constant */ + /* expect+1: error: too many characters in character constant [71] */ sink(L'ä'); /* GCC extension */ - /* expect+1: dubious escape \e */ + /* expect+1: warning: dubious escape \e [79] */ sink(L'\e'); /* since C99 */ @@ -36,6 +36,6 @@ test(void) /* newline */ sink(L'\n'); - /* expect+1: empty character constant */ + /* expect+1: error: empty character constant [73] */ sink(L''); } Index: src/tests/usr.bin/xlint/lint1/lex_wide_string.c diff -u src/tests/usr.bin/xlint/lint1/lex_wide_string.c:1.2 src/tests/usr.bin/xlint/lint1/lex_wide_string.c:1.3 --- src/tests/usr.bin/xlint/lint1/lex_wide_string.c:1.2 Mon Aug 23 17:47:34 2021 +++ src/tests/usr.bin/xlint/lint1/lex_wide_string.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_wide_string.c,v 1.2 2021/08/23 17:47:34 rillig Exp $ */ +/* $NetBSD: lex_wide_string.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "lex_wide_string.c" /* @@ -20,10 +20,10 @@ test(void) sink(L"\0\0\0\0"); - /* expect+1: no hex digits follow \x [74] */ + /* expect+1: error: no hex digits follow \x [74] */ sink(L"\x"); - /* expect+1: dubious escape \y [79] */ + /* expect+1: warning: dubious escape \y [79] */ sink(L"\y"); sink(L"first" L"second"); Index: src/tests/usr.bin/xlint/lint1/msg_345.c diff -u src/tests/usr.bin/xlint/lint1/msg_345.c:1.2 src/tests/usr.bin/xlint/lint1/msg_345.c:1.3 --- src/tests/usr.bin/xlint/lint1/msg_345.c:1.2 Sun Jun 27 20:47:13 2021 +++ src/tests/usr.bin/xlint/lint1/msg_345.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_345.c,v 1.2 2021/06/27 20:47:13 rillig Exp $ */ +/* $NetBSD: msg_345.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_345.c" // Test for message: generic selection requires C11 or later [345] @@ -9,6 +9,6 @@ int test(int x) { - /* expect+1: generic selection requires C11 or later [345] */ + /* expect+1: error: generic selection requires C11 or later [345] */ return _Generic(x, default: 3) + x; } Index: src/tests/usr.bin/xlint/lint1/op_colon.c diff -u src/tests/usr.bin/xlint/lint1/op_colon.c:1.2 src/tests/usr.bin/xlint/lint1/op_colon.c:1.3 --- src/tests/usr.bin/xlint/lint1/op_colon.c:1.2 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/op_colon.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: op_colon.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: op_colon.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "op_colon.c" /* @@ -14,37 +14,37 @@ test_merge_qualifiers(_Bool cond, int *p const volatile int *cv) { sink(cond ? p : p); - /* expect+1: 'pointer to const int' */ + /* expect+1: ... 'pointer to const int' ... */ sink(cond ? p : c); - /* expect+1: 'pointer to volatile int' */ + /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? p : v); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? p : cv); - /* expect+1: 'pointer to const int' */ + /* expect+1: ... 'pointer to const int' ... */ sink(cond ? c : p); - /* expect+1: 'pointer to const int' */ + /* expect+1: ... 'pointer to const int' ... */ sink(cond ? c : c); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? c : v); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? c : cv); - /* expect+1: 'pointer to volatile int' */ + /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? v : p); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? v : c); - /* expect+1: 'pointer to volatile int' */ + /* expect+1: ... 'pointer to volatile int' ... */ sink(cond ? v : v); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? v : cv); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : p); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : c); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : v); - /* expect+1: 'pointer to const volatile int' */ + /* expect+1: ... 'pointer to const volatile int' ... */ sink(cond ? cv : cv); } Index: src/tests/usr.bin/xlint/lint1/stmt_for.c diff -u src/tests/usr.bin/xlint/lint1/stmt_for.c:1.2 src/tests/usr.bin/xlint/lint1/stmt_for.c:1.3 --- src/tests/usr.bin/xlint/lint1/stmt_for.c:1.2 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/stmt_for.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: stmt_for.c,v 1.2 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: stmt_for.c,v 1.3 2022/06/17 18:54:53 rillig Exp $ */ # 3 "stmt_for.c" /* @@ -14,4 +14,4 @@ test(void) for (0 0; } -/* expect+1: cannot recover from previous errors */ +/* expect+1: error: cannot recover from previous errors [224] */ Index: src/tests/usr.bin/xlint/lint1/gcc_attribute_enum.c diff -u src/tests/usr.bin/xlint/lint1/gcc_attribute_enum.c:1.4 src/tests/usr.bin/xlint/lint1/gcc_attribute_enum.c:1.5 --- src/tests/usr.bin/xlint/lint1/gcc_attribute_enum.c:1.4 Sun Jul 25 18:48:47 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_attribute_enum.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_attribute_enum.c,v 1.4 2021/07/25 18:48:47 rillig Exp $ */ +/* $NetBSD: gcc_attribute_enum.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "gcc_attribute_enum.c" /* @@ -37,7 +37,7 @@ enum without_initializer { enum with_initializer { INIT_FIRST __attribute__(()) = 1, INIT_LAST __attribute__(()) = 2, - /* expect+1: syntax error '__attribute__' [249] */ + /* expect+1: error: syntax error '__attribute__' [249] */ INIT_WRONG = 3 __attribute__(()), }; Index: src/tests/usr.bin/xlint/lint1/lex_string.c diff -u src/tests/usr.bin/xlint/lint1/lex_string.c:1.4 src/tests/usr.bin/xlint/lint1/lex_string.c:1.5 --- src/tests/usr.bin/xlint/lint1/lex_string.c:1.4 Sat Nov 20 17:27:46 2021 +++ src/tests/usr.bin/xlint/lint1/lex_string.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_string.c,v 1.4 2021/11/20 17:27:46 rillig Exp $ */ +/* $NetBSD: lex_string.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "lex_string.c" /* @@ -20,10 +20,10 @@ test(void) sink("\0\0\0\0"); - /* expect+1: no hex digits follow \x [74] */ + /* expect+1: error: no hex digits follow \x [74] */ sink("\x"); /* unfinished */ - /* expect+1: dubious escape \y [79] */ + /* expect+1: warning: dubious escape \y [79] */ sink("\y"); /* unknown escape sequence */ sink("first" "second"); Index: src/tests/usr.bin/xlint/lint1/msg_005.c diff -u src/tests/usr.bin/xlint/lint1/msg_005.c:1.4 src/tests/usr.bin/xlint/lint1/msg_005.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_005.c:1.4 Sat Sep 4 13:45:37 2021 +++ src/tests/usr.bin/xlint/lint1/msg_005.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_005.c,v 1.4 2021/09/04 13:45:37 rillig Exp $ */ +/* $NetBSD: msg_005.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_005.c" // Test for message: modifying typedef with '%s'; only qualifiers allowed [5] @@ -14,7 +14,7 @@ typedef number unsigned unsigned_number; /* expect+1: warning: modifying typedef with 'short'; only qualifiers allowed [5] */ typedef number short short_number; -/* expect+1: modifying typedef with 'long'; only qualifiers allowed [5] */ +/* expect+1: warning: modifying typedef with 'long'; only qualifiers allowed [5] */ typedef number long long_number; /* Index: src/tests/usr.bin/xlint/lint1/msg_041.c diff -u src/tests/usr.bin/xlint/lint1/msg_041.c:1.4 src/tests/usr.bin/xlint/lint1/msg_041.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_041.c:1.4 Mon Feb 7 02:44:49 2022 +++ src/tests/usr.bin/xlint/lint1/msg_041.c Fri Jun 17 18:54:53 2022 @@ -1,10 +1,10 @@ -/* $NetBSD: msg_041.c,v 1.4 2022/02/07 02:44:49 rillig Exp $ */ +/* $NetBSD: msg_041.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_041.c" // Test for message: bit-field in union is very unusual [41] union u { int member; - /* expect+1: bit-field in union is very unusual [41] */ + /* expect+1: warning: bit-field in union is very unusual [41] */ unsigned bit_field : 7; }; Index: src/tests/usr.bin/xlint/lint1/msg_048.c diff -u src/tests/usr.bin/xlint/lint1/msg_048.c:1.4 src/tests/usr.bin/xlint/lint1/msg_048.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_048.c:1.4 Fri Apr 8 21:48:19 2022 +++ src/tests/usr.bin/xlint/lint1/msg_048.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_048.c,v 1.4 2022/04/08 21:48:19 rillig Exp $ */ +/* $NetBSD: msg_048.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_048.c" // Test for message: overflow in enumeration values: %s [48] @@ -16,7 +16,7 @@ enum int_limits { MAX_MINUS_2 = 0x7ffffffd, MAX_MINUS_1, MAX, - /* expect+1: overflow in enumeration values: MIN [48] */ + /* expect+1: warning: overflow in enumeration values: MIN [48] */ MIN, MIN_PLUS_1 }; Index: src/tests/usr.bin/xlint/lint1/msg_080.c diff -u src/tests/usr.bin/xlint/lint1/msg_080.c:1.4 src/tests/usr.bin/xlint/lint1/msg_080.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_080.c:1.4 Sun Jul 4 13:44:43 2021 +++ src/tests/usr.bin/xlint/lint1/msg_080.c Fri Jun 17 18:54:53 2022 @@ -1,7 +1,7 @@ -/* $NetBSD: msg_080.c,v 1.4 2021/07/04 13:44:43 rillig Exp $ */ +/* $NetBSD: msg_080.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_080.c" // Test for message: dubious escape \%o [80] -/* expect+1: dubious escape \177 [80] */ +/* expect+1: warning: dubious escape \177 [80] */ char backslash_delete = '\'; Index: src/tests/usr.bin/xlint/lint1/msg_184.c diff -u src/tests/usr.bin/xlint/lint1/msg_184.c:1.4 src/tests/usr.bin/xlint/lint1/msg_184.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_184.c:1.4 Sat Aug 14 13:00:55 2021 +++ src/tests/usr.bin/xlint/lint1/msg_184.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_184.c,v 1.4 2021/08/14 13:00:55 rillig Exp $ */ +/* $NetBSD: msg_184.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_184.c" // Test for message: illegal combination of '%s' and '%s' [184] @@ -6,6 +6,6 @@ int * example(char *cp) { - /* expect+1: illegal combination of 'pointer to int' and 'pointer to char' [184] */ + /* expect+1: warning: illegal combination of 'pointer to int' and 'pointer to char' [184] */ return cp; } Index: src/tests/usr.bin/xlint/lint1/msg_250.c diff -u src/tests/usr.bin/xlint/lint1/msg_250.c:1.4 src/tests/usr.bin/xlint/lint1/msg_250.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_250.c:1.4 Sun Apr 24 20:08:23 2022 +++ src/tests/usr.bin/xlint/lint1/msg_250.c Fri Jun 17 18:54:53 2022 @@ -1,10 +1,10 @@ -/* $NetBSD: msg_250.c,v 1.4 2022/04/24 20:08:23 rillig Exp $ */ +/* $NetBSD: msg_250.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_250.c" // Test for message: unknown character \%o [250] -/* expect+1: unknown character \100 [250] */ +/* expect+1: error: unknown character \100 [250] */ @deprecated /* expect+2: error: old style declaration; add 'int' [1] */ -/* expect+1: syntax error 'char' [249] */ +/* expect+1: error: syntax error 'char' [249] */ char *gets(void); Index: src/tests/usr.bin/xlint/lint1/msg_265.c diff -u src/tests/usr.bin/xlint/lint1/msg_265.c:1.4 src/tests/usr.bin/xlint/lint1/msg_265.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_265.c:1.4 Wed Dec 22 14:25:35 2021 +++ src/tests/usr.bin/xlint/lint1/msg_265.c Fri Jun 17 18:54:53 2022 @@ -1,16 +1,16 @@ -/* $NetBSD: msg_265.c,v 1.4 2021/12/22 14:25:35 rillig Exp $ */ +/* $NetBSD: msg_265.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_265.c" /* Test for message: %s does not support 'long long' [265] */ /* lint1-flags: -w */ -/* expect+1: C90 does not support 'long long' [265] */ +/* expect+1: warning: C90 does not support 'long long' [265] */ long long unsupported_variable; /*LONGLONG*/ long long suppressed_variable, second_suppressed_variable; -/* expect+1: C90 does not support 'long long' [265] */ +/* expect+1: warning: C90 does not support 'long long' [265] */ long long another_unsupported_variable; Index: src/tests/usr.bin/xlint/lint1/msg_333.c diff -u src/tests/usr.bin/xlint/lint1/msg_333.c:1.4 src/tests/usr.bin/xlint/lint1/msg_333.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_333.c:1.4 Sun Jul 4 07:09:39 2021 +++ src/tests/usr.bin/xlint/lint1/msg_333.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_333.c,v 1.4 2021/07/04 07:09:39 rillig Exp $ */ +/* $NetBSD: msg_333.c,v 1.5 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_333.c" // Test for message: controlling expression must be bool, not '%s' [333] @@ -16,11 +16,11 @@ example(bool b, int i, const char *p) if (b) return "bool"; - /* expect+1: must be bool, not 'int' [333] */ + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ if (i) return "int"; - /* expect+1: must be bool, not 'pointer' [333] */ + /* expect+1: error: controlling expression must be bool, not 'pointer' [333] */ if (p) return "pointer"; @@ -29,7 +29,7 @@ example(bool b, int i, const char *p) return "bool constant"; } - /* expect+1: controlling expression must be bool, not 'int' [333] */ + /* expect+1: error: controlling expression must be bool, not 'int' [333] */ if (0) { /* expect+1: warning: statement not reached [193] */ return "integer constant"; Index: src/tests/usr.bin/xlint/lint1/gcc_stmt_asm.c diff -u src/tests/usr.bin/xlint/lint1/gcc_stmt_asm.c:1.3 src/tests/usr.bin/xlint/lint1/gcc_stmt_asm.c:1.4 --- src/tests/usr.bin/xlint/lint1/gcc_stmt_asm.c:1.3 Wed Jul 21 21:04:00 2021 +++ src/tests/usr.bin/xlint/lint1/gcc_stmt_asm.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: gcc_stmt_asm.c,v 1.3 2021/07/21 21:04:00 rillig Exp $ */ +/* $NetBSD: gcc_stmt_asm.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "gcc_stmt_asm.c" /* @@ -33,7 +33,7 @@ __asm__(); void syntax_error(void) { - /* expect+1: syntax error '__asm__' [249] */ + /* expect+1: error: syntax error '__asm__' [249] */ int i = __asm__(); } Index: src/tests/usr.bin/xlint/lint1/init_c90.c diff -u src/tests/usr.bin/xlint/lint1/init_c90.c:1.3 src/tests/usr.bin/xlint/lint1/init_c90.c:1.4 --- src/tests/usr.bin/xlint/lint1/init_c90.c:1.3 Sun Feb 27 11:40:30 2022 +++ src/tests/usr.bin/xlint/lint1/init_c90.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: init_c90.c,v 1.3 2022/02/27 11:40:30 rillig Exp $ */ +/* $NetBSD: init_c90.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "init_c90.c" /* @@ -25,6 +25,6 @@ struct point points_c99[] = {[3] = { 0, struct point compound_literal(void) { - /* expect+1: compound literals are a C99/GCC extension [319] */ + /* expect+1: error: compound literals are a C99/GCC extension [319] */ return (struct point){ 0, 0 }; } Index: src/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c diff -u src/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c:1.3 src/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c:1.4 --- src/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c:1.3 Sat Aug 21 11:50:57 2021 +++ src/tests/usr.bin/xlint/lint1/lex_integer_ilp32.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_integer_ilp32.c,v 1.3 2021/08/21 11:50:57 rillig Exp $ */ +/* $NetBSD: lex_integer_ilp32.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "lex_integer_ilp32.c" /* @@ -22,13 +22,13 @@ test_signed_int(void) sinki(2147483647); - /* expect+1: 'unsigned long' to 'int' is out of range, arg #1 [295] */ + /* expect+1: warning: conversion of 'unsigned long' to 'int' is out of range, arg #1 [295] */ sinki(2147483648); sinki(-2147483647); - /* expect+2: ANSI C treats constant as unsigned, op - [218] */ - /* expect+1: 'unsigned long' to 'int' is out of range, arg #1 [295] */ + /* expect+2: warning: ANSI C treats constant as unsigned, op - [218] */ + /* expect+1: warning: conversion of 'unsigned long' to 'int' is out of range, arg #1 [295] */ sinki(-2147483648); } @@ -39,6 +39,6 @@ test_unsigned_int(void) sinku(4294967295U); - /* expect+1: integer constant out of range [252] */ + /* expect+1: warning: integer constant out of range [252] */ sinku(4294967296U); } Index: src/tests/usr.bin/xlint/lint1/msg_069.c diff -u src/tests/usr.bin/xlint/lint1/msg_069.c:1.3 src/tests/usr.bin/xlint/lint1/msg_069.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_069.c:1.3 Fri Apr 8 21:29:29 2022 +++ src/tests/usr.bin/xlint/lint1/msg_069.c Fri Jun 17 18:54:53 2022 @@ -1,12 +1,12 @@ -/* $NetBSD: msg_069.c,v 1.3 2022/04/08 21:29:29 rillig Exp $ */ +/* $NetBSD: msg_069.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_069.c" // Test for message: inappropriate qualifiers with 'void' [69] /* expect+2: error: void type for 'const_void' [19] */ -/* expect+1: warning: inappropriate qualifiers with 'void' */ +/* expect+1: warning: inappropriate qualifiers with 'void' [69] */ const void const_void; /* expect+2: error: void type for 'volatile_void' [19] */ -/* expect+1: warning: inappropriate qualifiers with 'void' */ +/* expect+1: warning: inappropriate qualifiers with 'void' [69] */ volatile void volatile_void; Index: src/tests/usr.bin/xlint/lint1/msg_103.c diff -u src/tests/usr.bin/xlint/lint1/msg_103.c:1.3 src/tests/usr.bin/xlint/lint1/msg_103.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_103.c:1.3 Sun Jul 4 17:01:58 2021 +++ src/tests/usr.bin/xlint/lint1/msg_103.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_103.c,v 1.3 2021/07/04 17:01:58 rillig Exp $ */ +/* $NetBSD: msg_103.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_103.c" // Test for message: left operand of '.' must be struct or union, not '%s' [103] @@ -11,6 +11,6 @@ void test(struct point pt, struct point *ptr) { pt.x = 0; - /* expect+1: left operand of '.' must be struct or union, not 'pointer to struct point' [103] */ + /* expect+1: error: left operand of '.' must be struct or union, not 'pointer to struct point' [103] */ ptr.y = 0; } Index: src/tests/usr.bin/xlint/lint1/msg_104.c diff -u src/tests/usr.bin/xlint/lint1/msg_104.c:1.3 src/tests/usr.bin/xlint/lint1/msg_104.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_104.c:1.3 Sun Jul 4 17:01:58 2021 +++ src/tests/usr.bin/xlint/lint1/msg_104.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_104.c,v 1.3 2021/07/04 17:01:58 rillig Exp $ */ +/* $NetBSD: msg_104.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_104.c" // Test for message: left operand of '->' must be pointer to struct or union, not '%s' [104] @@ -11,7 +11,7 @@ struct point { void test(struct point pt, struct point *ptr) { - /* expect+1: left operand of '->' must be pointer to struct or union, not 'struct point' [104] */ + /* expect+1: error: left operand of '->' must be pointer to struct or union, not 'struct point' [104] */ pt->x = 0; ptr->y = 0; } Index: src/tests/usr.bin/xlint/lint1/msg_211.c diff -u src/tests/usr.bin/xlint/lint1/msg_211.c:1.3 src/tests/usr.bin/xlint/lint1/msg_211.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_211.c:1.3 Mon Aug 16 18:51:58 2021 +++ src/tests/usr.bin/xlint/lint1/msg_211.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_211.c,v 1.3 2021/08/16 18:51:58 rillig Exp $ */ +/* $NetBSD: msg_211.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_211.c" // Test for message: return value type mismatch (%s) and (%s) [211] @@ -16,7 +16,7 @@ return_int(double dbl, void *ptr, struct /* expect+1: warning: illegal combination of integer (int) and pointer (pointer to void) [183] */ return ptr; if (str.member > 0) - /* expect+1: error: return value type mismatch (int) and (struct str) [211 */ + /* expect+1: error: return value type mismatch (int) and (struct str) [211] */ return str; return 3; } Index: src/tests/usr.bin/xlint/lint1/msg_251.c diff -u src/tests/usr.bin/xlint/lint1/msg_251.c:1.3 src/tests/usr.bin/xlint/lint1/msg_251.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_251.c:1.3 Tue Jun 29 07:17:43 2021 +++ src/tests/usr.bin/xlint/lint1/msg_251.c Fri Jun 17 18:54:53 2022 @@ -1,10 +1,10 @@ -/* $NetBSD: msg_251.c,v 1.3 2021/06/29 07:17:43 rillig Exp $ */ +/* $NetBSD: msg_251.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_251.c" // Test for message: malformed integer constant [251] -/* expect+1: malformed integer constant */ +/* expect+1: warning: malformed integer constant [251] */ int lll = 123LLL; -/* expect+1: malformed integer constant */ +/* expect+1: warning: malformed integer constant [251] */ unsigned int uu = 123UU; Index: src/tests/usr.bin/xlint/lint1/msg_253.c diff -u src/tests/usr.bin/xlint/lint1/msg_253.c:1.3 src/tests/usr.bin/xlint/lint1/msg_253.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_253.c:1.3 Tue Jun 29 07:17:43 2021 +++ src/tests/usr.bin/xlint/lint1/msg_253.c Fri Jun 17 18:54:53 2022 @@ -1,8 +1,8 @@ -/* $NetBSD: msg_253.c,v 1.3 2021/06/29 07:17:43 rillig Exp $ */ +/* $NetBSD: msg_253.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_253.c" // Test for message: unterminated character constant [253] -/* expect+3: [253] */ -/* expect+2: syntax error '' */ +/* expect+3: error: unterminated character constant [253] */ +/* expect+2: error: syntax error '' [249] */ ' Index: src/tests/usr.bin/xlint/lint1/msg_254.c diff -u src/tests/usr.bin/xlint/lint1/msg_254.c:1.3 src/tests/usr.bin/xlint/lint1/msg_254.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_254.c:1.3 Tue Jun 29 07:17:43 2021 +++ src/tests/usr.bin/xlint/lint1/msg_254.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_254.c,v 1.3 2021/06/29 07:17:43 rillig Exp $ */ +/* $NetBSD: msg_254.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_254.c" /* Test for message: newline in string or char constant [254] */ @@ -10,10 +10,10 @@ * C99 does not allow it. */ -/* expect+6: newline in string or char constant [254] */ -/* expect+5: unterminated string constant [258] */ -/* expect+4: syntax error '"' [249] */ -/* expect+4: newline in string or char constant [254] */ -/* expect+3: unterminated string constant [258] */ +/* expect+6: error: newline in string or char constant [254] */ +/* expect+5: error: unterminated string constant [258] */ +/* expect+4: error: syntax error '"' [249] */ +/* expect+4: error: newline in string or char constant [254] */ +/* expect+3: error: unterminated string constant [258] */ "line1 line2" Index: src/tests/usr.bin/xlint/lint1/msg_257.c diff -u src/tests/usr.bin/xlint/lint1/msg_257.c:1.3 src/tests/usr.bin/xlint/lint1/msg_257.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_257.c:1.3 Fri Aug 27 20:49:25 2021 +++ src/tests/usr.bin/xlint/lint1/msg_257.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_257.c,v 1.3 2021/08/27 20:49:25 rillig Exp $ */ +/* $NetBSD: msg_257.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_257.c" // Test for message: extra characters in lint comment [257] @@ -14,7 +14,7 @@ void take(const void *); /* PRINTFLIKE 7 */ void my_printf(const char *fmt) -/* expect+1: warning: argument number mismatch with directive: */ +/* expect+1: warning: argument number mismatch with directive: ** PRINTFLIKE ** [283] */ { take(fmt); } Index: src/tests/usr.bin/xlint/lint1/msg_259_c90.c diff -u src/tests/usr.bin/xlint/lint1/msg_259_c90.c:1.3 src/tests/usr.bin/xlint/lint1/msg_259_c90.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_259_c90.c:1.3 Thu Sep 2 17:55:27 2021 +++ src/tests/usr.bin/xlint/lint1/msg_259_c90.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_259_c90.c,v 1.3 2021/09/02 17:55:27 rillig Exp $ */ +/* $NetBSD: msg_259_c90.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_259_c90.c" /* Test for message: argument #%d is converted from '%s' to '%s' due to prototype [259] */ @@ -47,7 +47,7 @@ change_in_type_width(char c, int i, long signed_long(i); plain_char(l); /* XXX: why no warning? */ - /* expect+1: from 'long' to 'int' due to prototype [259] */ + /* expect+1: ... from 'long' to 'int' due to prototype [259] */ signed_int(l); signed_long(l); } Index: src/tests/usr.bin/xlint/lint1/msg_283.c diff -u src/tests/usr.bin/xlint/lint1/msg_283.c:1.3 src/tests/usr.bin/xlint/lint1/msg_283.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_283.c:1.3 Mon Aug 30 19:48:21 2021 +++ src/tests/usr.bin/xlint/lint1/msg_283.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_283.c,v 1.3 2021/08/30 19:48:21 rillig Exp $ */ +/* $NetBSD: msg_283.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_283.c" // Test for message: argument number mismatch with directive: /* %s */ [283] @@ -27,6 +27,6 @@ printflike_2_comment(int a, const char * /* PRINTFLIKE 3 */ void printflike_3_comment(int a, const char *fmt) -/* expect+1: warning: argument number mismatch with directive */ +/* expect+1: warning: argument number mismatch with directive: ** PRINTFLIKE ** [283] */ { } Index: src/tests/usr.bin/xlint/lint1/msg_289.c diff -u src/tests/usr.bin/xlint/lint1/msg_289.c:1.3 src/tests/usr.bin/xlint/lint1/msg_289.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_289.c:1.3 Fri Aug 27 20:49:25 2021 +++ src/tests/usr.bin/xlint/lint1/msg_289.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_289.c,v 1.3 2021/08/27 20:49:25 rillig Exp $ */ +/* $NetBSD: msg_289.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_289.c" // Test for message: can't be used together: /* PRINTFLIKE */ /* SCANFLIKE */ [289] @@ -6,6 +6,6 @@ /* PRINTFLIKE */ /* SCANFLIKE */ void both(void) -/* expect+1: warning: can't be used together */ +/* expect+1: warning: can't be used together: ** PRINTFLIKE ** ** SCANFLIKE ** [289] */ { } Index: src/tests/usr.bin/xlint/lint1/msg_312.c diff -u src/tests/usr.bin/xlint/lint1/msg_312.c:1.3 src/tests/usr.bin/xlint/lint1/msg_312.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_312.c:1.3 Wed Dec 22 14:25:35 2021 +++ src/tests/usr.bin/xlint/lint1/msg_312.c Fri Jun 17 18:54:53 2022 @@ -1,9 +1,9 @@ -/* $NetBSD: msg_312.c,v 1.3 2021/12/22 14:25:35 rillig Exp $ */ +/* $NetBSD: msg_312.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_312.c" /* Test for message: %s does not support // comments [312] */ /* lint1-flags: -tw */ -/* expect+1: traditional C does not support // comments [312] */ +/* expect+1: warning: traditional C does not support // comments [312] */ // C99 comment Index: src/tests/usr.bin/xlint/lint1/msg_342.c diff -u src/tests/usr.bin/xlint/lint1/msg_342.c:1.3 src/tests/usr.bin/xlint/lint1/msg_342.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_342.c:1.3 Sun Jul 25 22:43:08 2021 +++ src/tests/usr.bin/xlint/lint1/msg_342.c Fri Jun 17 18:54:53 2022 @@ -1,5 +1,5 @@ -/* $NetBSD: msg_342.c,v 1.3 2021/07/25 22:43:08 rillig Exp $ */ -# 3 "msg_341.c" +/* $NetBSD: msg_342.c,v 1.4 2022/06/17 18:54:53 rillig Exp $ */ +# 3 "msg_342.c" // Test for message: argument to '%s' must be cast to 'unsigned char', not to '%s' [342] @@ -73,7 +73,7 @@ void function_call_char(char c) { - /* expect+1: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' */ + /* expect+1: warning: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' [341] */ (isspace)(c); /* This is the only allowed form. */ @@ -82,10 +82,10 @@ function_call_char(char c) /* The cast to 'int' is redundant, it doesn't hurt though. */ isspace((int)(unsigned char)c); - /* expect+1: argument to 'isspace' must be cast to 'unsigned char', not to 'int' */ + /* expect+1: warning: argument to 'isspace' must be cast to 'unsigned char', not to 'int' [342] */ isspace((int)c); - /* expect+1: argument to 'isspace' must be cast to 'unsigned char', not to 'unsigned int' */ + /* expect+1: warning: argument to 'isspace' must be cast to 'unsigned char', not to 'unsigned int' [342] */ isspace((unsigned int)c); } @@ -116,15 +116,15 @@ void macro_invocation_NetBSD(char c) { - /* expect+1: argument to 'function from <ctype.h>' must be 'unsigned char' or EOF, not 'char' */ + /* expect+1: warning: argument to 'function from <ctype.h>' must be 'unsigned char' or EOF, not 'char' [341] */ sink(((int)((_ctype_tab_ + 1)[(c)] & 0x0040))); /* This is the only allowed form. */ sink(((int)((_ctype_tab_ + 1)[((unsigned char)c)] & 0x0040))); - /* expect+1: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'int' */ + /* expect+1: warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'int' [342] */ sink(((int)((_ctype_tab_ + 1)[((int)c)] & 0x0040))); - /* expect+1: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'unsigned int' */ + /* expect+1: warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'unsigned int' [342] */ sink(((int)((_ctype_tab_ + 1)[((unsigned int)c)] & 0x0040))); } Index: src/tests/usr.bin/xlint/lint1/msg_342.exp diff -u src/tests/usr.bin/xlint/lint1/msg_342.exp:1.3 src/tests/usr.bin/xlint/lint1/msg_342.exp:1.4 --- src/tests/usr.bin/xlint/lint1/msg_342.exp:1.3 Sun Jul 25 22:43:08 2021 +++ src/tests/usr.bin/xlint/lint1/msg_342.exp Fri Jun 17 18:54:53 2022 @@ -1,20 +1,20 @@ -msg_341.c(39): warning: argument to 'isalnum' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(41): warning: argument to 'isalpha' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(43): warning: argument to 'isblank' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(45): warning: argument to 'iscntrl' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(47): warning: argument to 'isdigit' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(49): warning: argument to 'isgraph' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(51): warning: argument to 'islower' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(53): warning: argument to 'isprint' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(55): warning: argument to 'ispunct' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(57): warning: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(59): warning: argument to 'isupper' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(61): warning: argument to 'isxdigit' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(63): warning: argument to 'tolower' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(65): warning: argument to 'toupper' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(77): warning: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(86): warning: argument to 'isspace' must be cast to 'unsigned char', not to 'int' [342] -msg_341.c(89): warning: argument to 'isspace' must be cast to 'unsigned char', not to 'unsigned int' [342] -msg_341.c(120): warning: argument to 'function from <ctype.h>' must be 'unsigned char' or EOF, not 'char' [341] -msg_341.c(126): warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'int' [342] -msg_341.c(129): warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'unsigned int' [342] +msg_342.c(39): warning: argument to 'isalnum' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(41): warning: argument to 'isalpha' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(43): warning: argument to 'isblank' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(45): warning: argument to 'iscntrl' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(47): warning: argument to 'isdigit' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(49): warning: argument to 'isgraph' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(51): warning: argument to 'islower' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(53): warning: argument to 'isprint' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(55): warning: argument to 'ispunct' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(57): warning: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(59): warning: argument to 'isupper' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(61): warning: argument to 'isxdigit' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(63): warning: argument to 'tolower' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(65): warning: argument to 'toupper' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(77): warning: argument to 'isspace' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(86): warning: argument to 'isspace' must be cast to 'unsigned char', not to 'int' [342] +msg_342.c(89): warning: argument to 'isspace' must be cast to 'unsigned char', not to 'unsigned int' [342] +msg_342.c(120): warning: argument to 'function from <ctype.h>' must be 'unsigned char' or EOF, not 'char' [341] +msg_342.c(126): warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'int' [342] +msg_342.c(129): warning: argument to 'function from <ctype.h>' must be cast to 'unsigned char', not to 'unsigned int' [342] Index: src/tests/usr.bin/xlint/lint1/lex_integer.c diff -u src/tests/usr.bin/xlint/lint1/lex_integer.c:1.9 src/tests/usr.bin/xlint/lint1/lex_integer.c:1.10 --- src/tests/usr.bin/xlint/lint1/lex_integer.c:1.9 Sat Aug 28 21:01:34 2021 +++ src/tests/usr.bin/xlint/lint1/lex_integer.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_integer.c,v 1.9 2021/08/28 21:01:34 rillig Exp $ */ +/* $NetBSD: lex_integer.c,v 1.10 2022/06/17 18:54:53 rillig Exp $ */ # 3 "lex_integer.c" /* @@ -24,104 +24,104 @@ void print_type(struct s); void no_suffix(void) { - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ print_type(0); /* The '-' is not part of the constant, it is a unary operator. */ - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ print_type(-1); - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ print_type(2147483647); - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ print_type(0x7fffffff); - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ print_type(017777777777); - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(0x80000000); - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(020000000000); - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(0xffffffff); - /* expect+1: passing 'long' */ + /* expect+1: ... passing 'long' ... */ print_type(2147483648); - /* expect+1: passing 'long' */ + /* expect+1: ... passing 'long' ... */ print_type(0x0000000100000000); - /* expect+1: passing 'long' */ + /* expect+1: ... passing 'long' ... */ print_type(0x7fffffffffffffff); - /* expect+1: passing 'unsigned long' */ + /* expect+1: ... passing 'unsigned long' ... */ print_type(0x8000000000000000); - /* expect+1: passing 'unsigned long' */ + /* expect+1: ... passing 'unsigned long' ... */ print_type(0xffffffffffffffff); /* expect+2: warning: integer constant out of range [252] */ - /* expect+1: warning: passing 'unsigned long' */ + /* expect+1: ... passing 'unsigned long' ... */ print_type(0x00010000000000000000); } void suffix_u(void) { - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(3U); - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(3u); - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(4294967295U); - /* expect+1: passing 'unsigned long' */ + /* expect+1: ... passing 'unsigned long' ... */ print_type(4294967296U); } void suffix_l(void) { - /* expect+1: passing 'long' */ + /* expect+1: ... passing 'long' ... */ print_type(3L); - /* expect+1: passing 'long' */ + /* expect+1: ... passing 'long' ... */ print_type(3l); } void suffix_ul(void) { - /* expect+1: passing 'unsigned long' */ + /* expect+1: ... passing 'unsigned long' ... */ print_type(3UL); - /* expect+1: passing 'unsigned long' */ + /* expect+1: ... passing 'unsigned long' ... */ print_type(3LU); } void suffix_ll(void) { - /* expect+1: passing 'long long' */ + /* expect+1: ... passing 'long long' ... */ print_type(3LL); /* The 'Ll' must not use mixed case. Checked by the compiler. */ - /* expect+1: passing 'long long' */ + /* expect+1: ... passing 'long long' ... */ print_type(3Ll); - /* expect+1: passing 'long long' */ + /* expect+1: ... passing 'long long' ... */ print_type(3ll); } void suffix_ull(void) { - /* expect+1: passing 'unsigned long long' */ + /* expect+1: ... passing 'unsigned long long' ... */ print_type(3llu); - /* expect+1: passing 'unsigned long long' */ + /* expect+1: ... passing 'unsigned long long' ... */ print_type(3Ull); /* The 'LL' must not be split. Checked by the compiler. */ - /* expect+1: passing 'unsigned long long' */ + /* expect+1: ... passing 'unsigned long long' ... */ print_type(3lul); /* The 'Ll' must not use mixed case. Checked by the compiler. */ - /* expect+1: passing 'unsigned long long' */ + /* expect+1: ... passing 'unsigned long long' ... */ print_type(3ULl); } @@ -129,11 +129,11 @@ void suffix_too_many(void) { /* expect+2: warning: malformed integer constant [251] */ - /* expect+1: passing 'long long' */ + /* expect+1: ... passing 'long long' ... */ print_type(3LLL); /* expect+2: warning: malformed integer constant [251] */ - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(3uu); } @@ -142,9 +142,9 @@ void binary_literal(void) { /* This is a GCC extension, but lint doesn't know that. */ - /* expect+1: passing 'int' */ + /* expect+1: ... passing 'int' ... */ print_type(0b1111000001011010); - /* expect+1: passing 'unsigned int' */ + /* expect+1: ... passing 'unsigned int' ... */ print_type(0b11110000111100001111000011110000); } Index: src/tests/usr.bin/xlint/lint1/msg_031.c diff -u src/tests/usr.bin/xlint/lint1/msg_031.c:1.7 src/tests/usr.bin/xlint/lint1/msg_031.c:1.8 --- src/tests/usr.bin/xlint/lint1/msg_031.c:1.7 Wed Jun 15 20:18:31 2022 +++ src/tests/usr.bin/xlint/lint1/msg_031.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_031.c,v 1.7 2022/06/15 20:18:31 rillig Exp $ */ +/* $NetBSD: msg_031.c,v 1.8 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_031.c" // Test for message: '%s' has incomplete type '%s' [31] @@ -13,9 +13,9 @@ struct incomplete; struct complete complete_var; -/* expect+1: 'incomplete_var' has incomplete type 'incomplete struct incomplete' */ +/* expect+1: error: 'incomplete_var' has incomplete type 'incomplete struct incomplete' [31] */ struct incomplete incomplete_var; -/* expect+1: '<unnamed>' has incomplete type 'incomplete struct incomplete' [31] */ +/* expect+1: error: '<unnamed>' has incomplete type 'incomplete struct incomplete' [31] */ void function(struct incomplete); Index: src/tests/usr.bin/xlint/lint1/msg_259_ilp32.c diff -u src/tests/usr.bin/xlint/lint1/msg_259_ilp32.c:1.7 src/tests/usr.bin/xlint/lint1/msg_259_ilp32.c:1.8 --- src/tests/usr.bin/xlint/lint1/msg_259_ilp32.c:1.7 Sat Apr 16 18:41:21 2022 +++ src/tests/usr.bin/xlint/lint1/msg_259_ilp32.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_259_ilp32.c,v 1.7 2022/04/16 18:41:21 rillig Exp $ */ +/* $NetBSD: msg_259_ilp32.c,v 1.8 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_259_ilp32.c" /* Test for message: argument #%d is converted from '%s' to '%s' due to prototype [259] */ @@ -22,16 +22,16 @@ example(char c, int i, long l) { plain_char(c); signed_int(c); - /* expect+1: from 'char' to 'long' due to prototype [259] */ + /* expect+1: ... from 'char' to 'long' due to prototype [259] */ signed_long(c); plain_char(i); signed_int(i); - /* expect+1: from 'int' to 'long' due to prototype [259] */ + /* expect+1: ... from 'int' to 'long' due to prototype [259] */ signed_long(i); plain_char(l); - /* expect+1: from 'long' to 'int' due to prototype [259] */ + /* expect+1: ... from 'long' to 'int' due to prototype [259] */ signed_int(l); signed_long(l); } Index: src/tests/usr.bin/xlint/lint1/msg_193.c diff -u src/tests/usr.bin/xlint/lint1/msg_193.c:1.18 src/tests/usr.bin/xlint/lint1/msg_193.c:1.19 --- src/tests/usr.bin/xlint/lint1/msg_193.c:1.18 Thu Jun 16 16:58:36 2022 +++ src/tests/usr.bin/xlint/lint1/msg_193.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_193.c,v 1.18 2022/06/16 16:58:36 rillig Exp $ */ +/* $NetBSD: msg_193.c,v 1.19 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_193.c" // Test for message: statement not reached [193] @@ -52,7 +52,7 @@ test_if_statement(void) reachable(); reachable(); if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ reachable(); } @@ -71,12 +71,12 @@ test_if_compound_statement(void) } if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (0) { { { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } } } @@ -90,7 +90,7 @@ test_if_without_else(void) reachable(); if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ reachable(); } @@ -100,11 +100,11 @@ test_if_with_else(void) if (1) reachable(); else - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ reachable(); if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ else reachable(); reachable(); @@ -115,22 +115,22 @@ test_if_else_if_else(void) { if (1) reachable(); - else if (1) /* expect+0: 193 */ + else if (1) /* expect+0: ... [193] */ unreachable(); else - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ else if (1) reachable(); else - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ else if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ else reachable(); } @@ -140,7 +140,7 @@ test_if_return(void) { if (1) return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -149,7 +149,7 @@ test_if_else_return(void) if (1) reachable(); else - return; /* expect+0: 193 */ + return; /* expect+0: ... [193] */ reachable(); } @@ -158,7 +158,7 @@ test_for_forever(void) { for (;;) reachable(); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -166,14 +166,14 @@ test_for_true(void) { for (; 1;) reachable(); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void test_for_false(void) { for (; 0;) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ reachable(); } @@ -183,7 +183,7 @@ test_for_break(void) for (;;) { reachable(); break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } reachable(); } @@ -194,16 +194,16 @@ test_for_if_break(void) for (;;) { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } reachable(); } @@ -214,9 +214,9 @@ test_for_continue(void) for (;;) { reachable(); continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -225,18 +225,18 @@ test_for_if_continue(void) for (;;) { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -245,9 +245,9 @@ test_for_return(void) for (;;) { reachable(); return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -256,18 +256,18 @@ test_for_if_return(void) for (;;) { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -275,14 +275,14 @@ test_while_true(void) { while (1) reachable(); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void test_while_false(void) { while (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ reachable(); } @@ -292,7 +292,7 @@ test_while_break(void) while (1) { reachable(); break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } reachable(); } @@ -303,16 +303,16 @@ test_while_if_break(void) while (1) { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } reachable(); } @@ -323,9 +323,9 @@ test_while_continue(void) while (1) { reachable(); continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -334,18 +334,18 @@ test_while_if_continue(void) while (1) { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -354,9 +354,9 @@ test_while_return(void) while (1) { reachable(); return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -365,18 +365,18 @@ test_while_if_return(void) while (1) { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -385,7 +385,7 @@ test_do_while_true(void) do { reachable(); } while (1); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -403,7 +403,7 @@ test_do_while_break(void) do { reachable(); break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } while (1); reachable(); } @@ -414,16 +414,16 @@ test_do_while_if_break(void) do { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); break; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } while (1); reachable(); } @@ -434,9 +434,9 @@ test_do_while_continue(void) do { reachable(); continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } while (1); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -445,18 +445,18 @@ test_do_while_if_continue(void) do { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); continue; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } while (1); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -465,9 +465,9 @@ test_do_while_return(void) do { reachable(); return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } while (1); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void @@ -476,31 +476,31 @@ test_do_while_if_return(void) do { reachable(); if (0) { - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } if (1) { reachable(); return; - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } while (1); - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ } void test_if_nested(void) { if (0) { - if (1) /* expect+0: 193 */ + if (1) /* expect+0: ... [193] */ unreachable(); else - unreachable(); /* expect+0: 193 *//* XXX: redundant */ + unreachable(); /* expect+0: ... [193] *//* XXX: redundant */ if (0) - unreachable(); /* expect+0: 193 *//* XXX: redundant */ + unreachable(); /* expect+0: ... [193] *//* XXX: redundant */ else unreachable(); @@ -512,10 +512,10 @@ test_if_nested(void) if (1) reachable(); else - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ else reachable(); @@ -529,7 +529,7 @@ test_if_maybe(void) { if (maybe()) { if (0) - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ else reachable(); reachable(); @@ -537,7 +537,7 @@ test_if_maybe(void) reachable(); if (0) { - if (maybe()) /* expect+0: 193 */ + if (maybe()) /* expect+0: ... [193] */ unreachable(); else unreachable(); @@ -595,7 +595,7 @@ test_while_goto(void) goto out; break; /* lint only warns with the -b option */ } - unreachable(); /* expect+0: 193 */ + unreachable(); /* expect+0: ... [193] */ out: reachable(); } @@ -604,7 +604,7 @@ void test_unreachable_label(void) { if (0) - goto unreachable; /* expect+0: 193 */ + goto unreachable; /* expect+0: ... [193] */ goto reachable; /* named_label assumes that any label is reachable. */ Index: src/tests/usr.bin/xlint/lint1/msg_259.c diff -u src/tests/usr.bin/xlint/lint1/msg_259.c:1.20 src/tests/usr.bin/xlint/lint1/msg_259.c:1.21 --- src/tests/usr.bin/xlint/lint1/msg_259.c:1.20 Fri Apr 15 21:50:07 2022 +++ src/tests/usr.bin/xlint/lint1/msg_259.c Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_259.c,v 1.20 2022/04/15 21:50:07 rillig Exp $ */ +/* $NetBSD: msg_259.c,v 1.21 2022/06/17 18:54:53 rillig Exp $ */ # 3 "msg_259.c" // Test for message: argument #%d is converted from '%s' to '%s' due to prototype [259] @@ -48,7 +48,7 @@ change_in_type_width(char c, int i, long signed_long(i); plain_char(l); /* XXX: why no warning? */ - /* expect+1: from 'long' to 'int' due to prototype [259] */ + /* expect+1: ... from 'long' to 'int' due to prototype [259] */ signed_int(l); signed_long(l); } Index: src/usr.bin/xlint/lint1/README.md diff -u src/usr.bin/xlint/lint1/README.md:1.5 src/usr.bin/xlint/lint1/README.md:1.6 --- src/usr.bin/xlint/lint1/README.md:1.5 Wed Jun 15 18:11:02 2022 +++ src/usr.bin/xlint/lint1/README.md Fri Jun 17 18:54:53 2022 @@ -1,4 +1,4 @@ -[//]: # ($NetBSD: README.md,v 1.5 2022/06/15 18:11:02 rillig Exp $) +[//]: # ($NetBSD: README.md,v 1.6 2022/06/17 18:54:53 rillig Exp $) # Introduction @@ -160,7 +160,9 @@ The comment `/* expect+1: ... */` expect code 1 line below, `/* expect-5: ... */` expects a diagnostic to be generated for the code 5 lines above. Each `expect` comment must be in a single line. -There may be other code or comments in the same line. +At the start and the end of the comment, the placeholder `...` stands for an +arbitrary sequence of characters. +There may be other code or comments in the same line of the `.c` file. Each diagnostic has its own test `msg_???.c` that triggers the corresponding diagnostic.