Module Name: src Committed By: rillig Date: Sat Nov 30 18:17:12 UTC 2024
Modified Files: src/tests/usr.bin/xlint/lint2: msg_000.exp msg_001.exp msg_002.exp msg_003.exp msg_004.exp msg_005.exp msg_006.exp msg_007.exp msg_008.exp msg_009.exp msg_010.exp msg_011.exp msg_012.exp msg_013.exp output_sorted.exp read.exp src/tests/usr.bin/xlint/xlint: t_xlint.sh src/usr.bin/xlint/lint2: check-msgs.lua chk.c msg.c read.c Log Message: lint: reword lint2 warnings, reduce punctuation The previous diagnostics used unusual punctuation, for example by placing spaces inside parentheses, as well as using space-space-tab and double-colon as separators. Convert these diagnostics into readily readable prose, and mark them clearly as coming from lint2, so that they can be related to the tests in /usr/tests/usr.bin/xlint/lint2/msg_???.ln. This change means that usr.bin/error no longer recognizes these messages as coming from lint2, but that can be fixed later if necessary. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/tests/usr.bin/xlint/lint2/msg_000.exp cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint2/msg_001.exp cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint2/msg_002.exp \ src/tests/usr.bin/xlint/lint2/msg_003.exp \ src/tests/usr.bin/xlint/lint2/msg_004.exp \ src/tests/usr.bin/xlint/lint2/msg_005.exp \ src/tests/usr.bin/xlint/lint2/msg_006.exp \ src/tests/usr.bin/xlint/lint2/msg_007.exp \ src/tests/usr.bin/xlint/lint2/msg_008.exp \ src/tests/usr.bin/xlint/lint2/msg_009.exp \ src/tests/usr.bin/xlint/lint2/msg_010.exp \ src/tests/usr.bin/xlint/lint2/msg_012.exp \ src/tests/usr.bin/xlint/lint2/msg_013.exp \ src/tests/usr.bin/xlint/lint2/output_sorted.exp cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint2/msg_011.exp \ src/tests/usr.bin/xlint/lint2/read.exp cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/xlint/t_xlint.sh cvs rdiff -u -r1.2 -r1.3 src/usr.bin/xlint/lint2/check-msgs.lua cvs rdiff -u -r1.67 -r1.68 src/usr.bin/xlint/lint2/chk.c cvs rdiff -u -r1.25 -r1.26 src/usr.bin/xlint/lint2/msg.c cvs rdiff -u -r1.92 -r1.93 src/usr.bin/xlint/lint2/read.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/xlint/lint2/msg_000.exp diff -u src/tests/usr.bin/xlint/lint2/msg_000.exp:1.1 src/tests/usr.bin/xlint/lint2/msg_000.exp:1.2 --- src/tests/usr.bin/xlint/lint2/msg_000.exp:1.1 Thu Aug 5 22:36:08 2021 +++ src/tests/usr.bin/xlint/lint2/msg_000.exp Sat Nov 30 18:17:12 2024 @@ -1,2 +1,2 @@ -defined_not_used defined( msg_000.c(2) ), but never used -used_not_defined used( msg_000.c(3) ), but not defined +defined_not_used is defined in msg_000.c(2) but never used [lint2:001] +used_not_defined is used in msg_000.c(3) but never defined [lint2:000] Index: src/tests/usr.bin/xlint/lint2/msg_001.exp diff -u src/tests/usr.bin/xlint/lint2/msg_001.exp:1.3 src/tests/usr.bin/xlint/lint2/msg_001.exp:1.4 --- src/tests/usr.bin/xlint/lint2/msg_001.exp:1.3 Sat Aug 7 19:07:03 2021 +++ src/tests/usr.bin/xlint/lint2/msg_001.exp Sat Nov 30 18:17:12 2024 @@ -1,2 +1,2 @@ -defined_not_used defined( msg_001.c(2) ), but never used -used_not_defined used( msg_001.c(3) ), but not defined +defined_not_used is defined in msg_001.c(2) but never used [lint2:001] +used_not_defined is used in msg_001.c(3) but never defined [lint2:000] Index: src/tests/usr.bin/xlint/lint2/msg_002.exp diff -u src/tests/usr.bin/xlint/lint2/msg_002.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_002.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_002.exp:1.2 Fri Aug 6 16:21:00 2021 +++ src/tests/usr.bin/xlint/lint2/msg_002.exp Sat Nov 30 18:17:12 2024 @@ -1,2 +1,2 @@ -defined defined( msg_002.c(3) ), but never used -only_declared declared( msg_002.c(2) ), but never used or defined +defined is defined in msg_002.c(3) but never used [lint2:001] +only_declared is declared in msg_002.c(2) but never used or defined [lint2:002] Index: src/tests/usr.bin/xlint/lint2/msg_003.exp diff -u src/tests/usr.bin/xlint/lint2/msg_003.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_003.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_003.exp:1.2 Sat Aug 7 19:07:03 2021 +++ src/tests/usr.bin/xlint/lint2/msg_003.exp Sat Nov 30 18:17:12 2024 @@ -1,2 +1,2 @@ -function defined( msg_003_a.c(10) ), but never used -function multiply defined msg_003_a.c(10) :: msg_003_b.c(10) +function is defined in msg_003_a.c(10) but never used [lint2:001] +function has multiple definitions in msg_003_a.c(10) and msg_003_b.c(10) [lint2:003] Index: src/tests/usr.bin/xlint/lint2/msg_004.exp diff -u src/tests/usr.bin/xlint/lint2/msg_004.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_004.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_004.exp:1.2 Sat Aug 7 19:07:03 2021 +++ src/tests/usr.bin/xlint/lint2/msg_004.exp Sat Nov 30 18:17:12 2024 @@ -1,6 +1,6 @@ -add value used inconsistently msg_004_define.c(2) :: msg_004_call.c(4) -add value declared inconsistently (double != int) msg_004_define.c(2) :: msg_004_call.c(2) -add, arg 1 used inconsistently msg_004_define.c(2)[double] :: msg_004_call.c(4)[int] -add, arg 2 used inconsistently msg_004_define.c(2)[double] :: msg_004_call.c(4)[int] -add, arg 1 declared inconsistently (double != int) msg_004_define.c(2) :: msg_004_call.c(2) -add, arg 2 declared inconsistently (double != int) msg_004_define.c(2) :: msg_004_call.c(2) +add has its return value used inconsistently by msg_004_define.c(2) and msg_004_call.c(4) [lint2:004] +add returns 'double' at msg_004_define.c(2), versus 'int' at msg_004_call.c(2) [lint2:005] +add has argument 1 with type 'double' at msg_004_define.c(2), versus 'int' at msg_004_call.c(4) [lint2:006] +add has argument 2 with type 'double' at msg_004_define.c(2), versus 'int' at msg_004_call.c(4) [lint2:006] +add has parameter 1 declared as 'double' in msg_004_define.c(2), versus 'int' in msg_004_call.c(2) [lint2:011] +add has parameter 2 declared as 'double' in msg_004_define.c(2), versus 'int' in msg_004_call.c(2) [lint2:011] Index: src/tests/usr.bin/xlint/lint2/msg_005.exp diff -u src/tests/usr.bin/xlint/lint2/msg_005.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_005.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_005.exp:1.2 Sat Aug 7 19:07:03 2021 +++ src/tests/usr.bin/xlint/lint2/msg_005.exp Sat Nov 30 18:17:12 2024 @@ -1,6 +1,6 @@ -add value used inconsistently msg_005_define.c(2) :: msg_005_call.c(4) -add value declared inconsistently (double != int) msg_005_define.c(2) :: msg_005_call.c(2) -add, arg 1 used inconsistently msg_005_define.c(2)[double] :: msg_005_call.c(4)[int] -add, arg 2 used inconsistently msg_005_define.c(2)[double] :: msg_005_call.c(4)[int] -add, arg 1 declared inconsistently (double != int) msg_005_define.c(2) :: msg_005_call.c(2) -add, arg 2 declared inconsistently (double != int) msg_005_define.c(2) :: msg_005_call.c(2) +add has its return value used inconsistently by msg_005_define.c(2) and msg_005_call.c(4) [lint2:004] +add returns 'double' at msg_005_define.c(2), versus 'int' at msg_005_call.c(2) [lint2:005] +add has argument 1 with type 'double' at msg_005_define.c(2), versus 'int' at msg_005_call.c(4) [lint2:006] +add has argument 2 with type 'double' at msg_005_define.c(2), versus 'int' at msg_005_call.c(4) [lint2:006] +add has parameter 1 declared as 'double' in msg_005_define.c(2), versus 'int' in msg_005_call.c(2) [lint2:011] +add has parameter 2 declared as 'double' in msg_005_define.c(2), versus 'int' in msg_005_call.c(2) [lint2:011] Index: src/tests/usr.bin/xlint/lint2/msg_006.exp diff -u src/tests/usr.bin/xlint/lint2/msg_006.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_006.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_006.exp:1.2 Sat Aug 7 19:07:03 2021 +++ src/tests/usr.bin/xlint/lint2/msg_006.exp Sat Nov 30 18:17:12 2024 @@ -1,6 +1,6 @@ -add value used inconsistently msg_006_define.c(2) :: msg_006_call.c(4) -add value declared inconsistently (double != int) msg_006_define.c(2) :: msg_006_call.c(2) -add, arg 1 used inconsistently msg_006_define.c(2)[double] :: msg_006_call.c(4)[int] -add, arg 2 used inconsistently msg_006_define.c(2)[double] :: msg_006_call.c(4)[int] -add, arg 1 declared inconsistently (double != int) msg_006_define.c(2) :: msg_006_call.c(2) -add, arg 2 declared inconsistently (double != int) msg_006_define.c(2) :: msg_006_call.c(2) +add has its return value used inconsistently by msg_006_define.c(2) and msg_006_call.c(4) [lint2:004] +add returns 'double' at msg_006_define.c(2), versus 'int' at msg_006_call.c(2) [lint2:005] +add has argument 1 with type 'double' at msg_006_define.c(2), versus 'int' at msg_006_call.c(4) [lint2:006] +add has argument 2 with type 'double' at msg_006_define.c(2), versus 'int' at msg_006_call.c(4) [lint2:006] +add has parameter 1 declared as 'double' in msg_006_define.c(2), versus 'int' in msg_006_call.c(2) [lint2:011] +add has parameter 2 declared as 'double' in msg_006_define.c(2), versus 'int' in msg_006_call.c(2) [lint2:011] Index: src/tests/usr.bin/xlint/lint2/msg_007.exp diff -u src/tests/usr.bin/xlint/lint2/msg_007.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_007.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_007.exp:1.2 Sat Nov 30 16:52:19 2024 +++ src/tests/usr.bin/xlint/lint2/msg_007.exp Sat Nov 30 18:17:12 2024 @@ -1,3 +1,3 @@ -params defined( msg_007_params.c(11) ), but never used -params: variable # of args declared msg_007_params.c(11) :: msg_007_params.c(13) -params: variable # of args declared msg_007_params.c(11) :: msg_007_params.c(14) +params is defined in msg_007_params.c(11) but never used [lint2:001] +params has 0 parameters in msg_007_params.c(11), versus 1 in msg_007_params.c(13) [lint2:012] +params has 0 parameters in msg_007_params.c(11), versus 2 in msg_007_params.c(14) [lint2:012] Index: src/tests/usr.bin/xlint/lint2/msg_008.exp diff -u src/tests/usr.bin/xlint/lint2/msg_008.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_008.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_008.exp:1.2 Sat Aug 14 14:25:51 2021 +++ src/tests/usr.bin/xlint/lint2/msg_008.exp Sat Nov 30 18:17:12 2024 @@ -1 +1 @@ -func returns value which is always ignored +func returns a value that is always ignored [lint2:008] Index: src/tests/usr.bin/xlint/lint2/msg_009.exp diff -u src/tests/usr.bin/xlint/lint2/msg_009.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_009.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_009.exp:1.2 Sat Aug 14 14:25:51 2021 +++ src/tests/usr.bin/xlint/lint2/msg_009.exp Sat Nov 30 18:17:12 2024 @@ -1 +1 @@ -func returns value which is sometimes ignored +func returns a value that is sometimes ignored [lint2:009] Index: src/tests/usr.bin/xlint/lint2/msg_010.exp diff -u src/tests/usr.bin/xlint/lint2/msg_010.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_010.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_010.exp:1.2 Sat Aug 14 14:25:51 2021 +++ src/tests/usr.bin/xlint/lint2/msg_010.exp Sat Nov 30 18:17:12 2024 @@ -1 +1 @@ -func value is used( msg_010.c?(30) ), but none returned +func has its return value used in msg_010.c?(30) but doesn't return one [lint2:010] Index: src/tests/usr.bin/xlint/lint2/msg_012.exp diff -u src/tests/usr.bin/xlint/lint2/msg_012.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_012.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_012.exp:1.2 Sat Aug 7 19:07:03 2021 +++ src/tests/usr.bin/xlint/lint2/msg_012.exp Sat Nov 30 18:17:12 2024 @@ -1 +1 @@ -add: variable # of args declared msg_012_a.c(2) :: msg_012_b.c(2) +add has 2 parameters in msg_012_a.c(2), versus 3 in msg_012_b.c(2) [lint2:012] Index: src/tests/usr.bin/xlint/lint2/msg_013.exp diff -u src/tests/usr.bin/xlint/lint2/msg_013.exp:1.2 src/tests/usr.bin/xlint/lint2/msg_013.exp:1.3 --- src/tests/usr.bin/xlint/lint2/msg_013.exp:1.2 Sat Aug 5 09:44:18 2023 +++ src/tests/usr.bin/xlint/lint2/msg_013.exp Sat Nov 30 18:17:12 2024 @@ -1,3 +1,3 @@ -my_printf: malformed format string local.c(12) -my_printf: malformed format string local.c(13) -my_printf, arg 2 inconsistent with format local.c(13) +my_printf is called with a malformed format string in local.c(12) [lint2:013] +my_printf is called with a malformed format string in local.c(13) [lint2:013] +my_printf is called in local.c(13) with argument 2 being incompatible with format string [lint2:014] Index: src/tests/usr.bin/xlint/lint2/output_sorted.exp diff -u src/tests/usr.bin/xlint/lint2/output_sorted.exp:1.2 src/tests/usr.bin/xlint/lint2/output_sorted.exp:1.3 --- src/tests/usr.bin/xlint/lint2/output_sorted.exp:1.2 Sat Aug 28 19:49:28 2021 +++ src/tests/usr.bin/xlint/lint2/output_sorted.exp Sat Nov 30 18:17:12 2024 @@ -1,27 +1,27 @@ -func0000 used( output_sorted.c(10) ), but not defined -func0000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func0000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -func1000 used( output_sorted.c(10) ), but not defined -func1000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func1000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -func2000 used( output_sorted.c(10) ), but not defined -func2000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func2000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -func3000 used( output_sorted.c(10) ), but not defined -func3000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func3000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -func4000 used( output_sorted.c(10) ), but not defined -func4000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func4000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -func5000 used( output_sorted.c(10) ), but not defined -func5000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func5000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -func6000 used( output_sorted.c(10) ), but not defined -func6000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func6000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -func7000 used( output_sorted.c(10) ), but not defined -func7000, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -func7000, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] -no_prototype used( output_sorted.c(10) ), but not defined -no_prototype, arg 1 used inconsistently output_sorted.c(10)[int] :: output_sorted.c(11)[pointer to const char] -no_prototype, arg 2 used inconsistently output_sorted.c(10)[pointer to const char] :: output_sorted.c(11)[double] +func0000 is used in output_sorted.c(10) but never defined [lint2:000] +func0000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func0000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +func1000 is used in output_sorted.c(10) but never defined [lint2:000] +func1000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func1000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +func2000 is used in output_sorted.c(10) but never defined [lint2:000] +func2000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func2000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +func3000 is used in output_sorted.c(10) but never defined [lint2:000] +func3000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func3000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +func4000 is used in output_sorted.c(10) but never defined [lint2:000] +func4000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func4000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +func5000 is used in output_sorted.c(10) but never defined [lint2:000] +func5000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func5000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +func6000 is used in output_sorted.c(10) but never defined [lint2:000] +func6000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func6000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +func7000 is used in output_sorted.c(10) but never defined [lint2:000] +func7000 has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +func7000 has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] +no_prototype is used in output_sorted.c(10) but never defined [lint2:000] +no_prototype has argument 1 with type 'int' at output_sorted.c(10), versus 'pointer to const char' at output_sorted.c(11) [lint2:006] +no_prototype has argument 2 with type 'pointer to const char' at output_sorted.c(10), versus 'double' at output_sorted.c(11) [lint2:006] Index: src/tests/usr.bin/xlint/lint2/msg_011.exp diff -u src/tests/usr.bin/xlint/lint2/msg_011.exp:1.4 src/tests/usr.bin/xlint/lint2/msg_011.exp:1.5 --- src/tests/usr.bin/xlint/lint2/msg_011.exp:1.4 Sat Nov 30 16:34:27 2024 +++ src/tests/usr.bin/xlint/lint2/msg_011.exp Sat Nov 30 18:17:12 2024 @@ -1,11 +1,11 @@ -add value used inconsistently msg_011_define.c(2) :: msg_011_call.c(4) -add value declared inconsistently (double != int) msg_011_define.c(2) :: msg_011_call.c(2) -add, arg 1 used inconsistently msg_011_define.c(2)[double] :: msg_011_call.c(4)[int] -add, arg 2 used inconsistently msg_011_define.c(2)[double] :: msg_011_call.c(4)[int] -add, arg 1 declared inconsistently (double != int) msg_011_define.c(2) :: msg_011_call.c(2) -add, arg 2 declared inconsistently (double != int) msg_011_define.c(2) :: msg_011_call.c(2) -func_param defined( msg_011_call_func.c(11) ), but never used -func_param, arg 1 declared inconsistently (pointer to function(char) returning void != pointer to function() returning void) msg_011_call_func.c(11) :: msg_011_call_func.c(12) -func_param, arg 1 declared inconsistently (pointer to function(char) returning void != pointer to function(void) returning void) msg_011_call_func.c(11) :: msg_011_call_func.c(13) -func_param, arg 1 declared inconsistently (pointer to function(char) returning void != pointer to function(double) returning void) msg_011_call_func.c(11) :: msg_011_call_func.c(14) -func_param, arg 1 declared inconsistently (pointer to function(char) returning void != pointer to function(double, double) returning void) msg_011_call_func.c(11) :: msg_011_call_func.c(15) +add has its return value used inconsistently by msg_011_define.c(2) and msg_011_call.c(4) [lint2:004] +add returns 'double' at msg_011_define.c(2), versus 'int' at msg_011_call.c(2) [lint2:005] +add has argument 1 with type 'double' at msg_011_define.c(2), versus 'int' at msg_011_call.c(4) [lint2:006] +add has argument 2 with type 'double' at msg_011_define.c(2), versus 'int' at msg_011_call.c(4) [lint2:006] +add has parameter 1 declared as 'double' in msg_011_define.c(2), versus 'int' in msg_011_call.c(2) [lint2:011] +add has parameter 2 declared as 'double' in msg_011_define.c(2), versus 'int' in msg_011_call.c(2) [lint2:011] +func_param is defined in msg_011_call_func.c(11) but never used [lint2:001] +func_param has parameter 1 declared as 'pointer to function(char) returning void' in msg_011_call_func.c(11), versus 'pointer to function() returning void' in msg_011_call_func.c(12) [lint2:011] +func_param has parameter 1 declared as 'pointer to function(char) returning void' in msg_011_call_func.c(11), versus 'pointer to function(void) returning void' in msg_011_call_func.c(13) [lint2:011] +func_param has parameter 1 declared as 'pointer to function(char) returning void' in msg_011_call_func.c(11), versus 'pointer to function(double) returning void' in msg_011_call_func.c(14) [lint2:011] +func_param has parameter 1 declared as 'pointer to function(char) returning void' in msg_011_call_func.c(11), versus 'pointer to function(double, double) returning void' in msg_011_call_func.c(15) [lint2:011] Index: src/tests/usr.bin/xlint/lint2/read.exp diff -u src/tests/usr.bin/xlint/lint2/read.exp:1.4 src/tests/usr.bin/xlint/lint2/read.exp:1.5 --- src/tests/usr.bin/xlint/lint2/read.exp:1.4 Mon Aug 30 21:23:37 2021 +++ src/tests/usr.bin/xlint/lint2/read.exp Sat Nov 30 18:17:12 2024 @@ -1,15 +1,15 @@ -a125 declared( read.c(125) ), but never used or defined -inline_function defined( read.c(256) ), but never used -inline_function value declared inconsistently (void != int) read.c(256) :: read.c(260) -printflike_0_comment defined( read.c(217) ), but never used -printflike_10_comment defined( read.c(229) ), but never used -printflike_3_comment defined( read.c(223) ), but never used -printflike_comment defined( read.c(211) ), but never used -scanflike_0_comment defined( read.c(243) ), but never used -scanflike_3_comment defined( read.c(249) ), but never used -scanflike_comment defined( read.c(237) ), but never used -used_function value declared inconsistently (int != void) read.c(254) :: read.c(253) -used_function returns value which is sometimes ignored -varargs_0_comment defined( read.c(199) ), but never used -varargs_3_comment defined( read.c(205) ), but never used -varargs_comment defined( read.c(193) ), but never used +a125 is declared in read.c(125) but never used or defined [lint2:002] +inline_function is defined in read.c(256) but never used [lint2:001] +inline_function returns 'void' at read.c(256), versus 'int' at read.c(260) [lint2:005] +printflike_0_comment is defined in read.c(217) but never used [lint2:001] +printflike_10_comment is defined in read.c(229) but never used [lint2:001] +printflike_3_comment is defined in read.c(223) but never used [lint2:001] +printflike_comment is defined in read.c(211) but never used [lint2:001] +scanflike_0_comment is defined in read.c(243) but never used [lint2:001] +scanflike_3_comment is defined in read.c(249) but never used [lint2:001] +scanflike_comment is defined in read.c(237) but never used [lint2:001] +used_function returns 'int' at read.c(254), versus 'void' at read.c(253) [lint2:005] +used_function returns a value that is sometimes ignored [lint2:009] +varargs_0_comment is defined in read.c(199) but never used [lint2:001] +varargs_3_comment is defined in read.c(205) but never used [lint2:001] +varargs_comment is defined in read.c(193) but never used [lint2:001] Index: src/tests/usr.bin/xlint/xlint/t_xlint.sh diff -u src/tests/usr.bin/xlint/xlint/t_xlint.sh:1.4 src/tests/usr.bin/xlint/xlint/t_xlint.sh:1.5 --- src/tests/usr.bin/xlint/xlint/t_xlint.sh:1.4 Thu Sep 7 06:24:31 2023 +++ src/tests/usr.bin/xlint/xlint/t_xlint.sh Sat Nov 30 18:17:12 2024 @@ -1,4 +1,4 @@ -# $NetBSD: t_xlint.sh,v 1.4 2023/09/07 06:24:31 rillig Exp $ +# $NetBSD: t_xlint.sh,v 1.5 2024/11/30 18:17:12 rillig Exp $ # # Copyright (c) 2023 The NetBSD Foundation, Inc. # All rights reserved. @@ -109,7 +109,7 @@ run_lint2_body() # Depending on whether the lint libraries are installed or not, there # may be a warning 'cannot find llib-lc.ln' on stderr. atf_check \ - -o 'inline:function defined( input.c(4) ), but never used\n' \ + -o 'inline:function is defined in input.c(4) but never used [lint2:001]\n' \ -e 'ignore' \ "$lint" -aabceghprSTxz input.ln } Index: src/usr.bin/xlint/lint2/check-msgs.lua diff -u src/usr.bin/xlint/lint2/check-msgs.lua:1.2 src/usr.bin/xlint/lint2/check-msgs.lua:1.3 --- src/usr.bin/xlint/lint2/check-msgs.lua:1.2 Fri Sep 10 21:05:08 2021 +++ src/usr.bin/xlint/lint2/check-msgs.lua Sat Nov 30 18:17:11 2024 @@ -1,5 +1,5 @@ #! /usr/bin/lua --- $NetBSD: check-msgs.lua,v 1.2 2021/09/10 21:05:08 rillig Exp $ +-- $NetBSD: check-msgs.lua,v 1.3 2024/11/30 18:17:11 rillig Exp $ --[[ @@ -16,7 +16,7 @@ local function load_messages(fname) local f = assert(io.open(fname, "r")) for line in f:lines() do - local msg, id = line:match("%s*\"(.+)\",%s*/%*%s*(%d+)%s*%*/$") + local msg, id = line:match("%s*\"(.+)\",%s*// (%d+)$") if msg ~= nil then msgs[tonumber(id)] = msg end Index: src/usr.bin/xlint/lint2/chk.c diff -u src/usr.bin/xlint/lint2/chk.c:1.67 src/usr.bin/xlint/lint2/chk.c:1.68 --- src/usr.bin/xlint/lint2/chk.c:1.67 Sun May 12 18:49:36 2024 +++ src/usr.bin/xlint/lint2/chk.c Sat Nov 30 18:17:11 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: chk.c,v 1.67 2024/05/12 18:49:36 rillig Exp $ */ +/* $NetBSD: chk.c,v 1.68 2024/11/30 18:17:11 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: chk.c,v 1.67 2024/05/12 18:49:36 rillig Exp $"); +__RCSID("$NetBSD: chk.c,v 1.68 2024/11/30 18:17:11 rillig Exp $"); #endif #include <ctype.h> @@ -140,10 +140,10 @@ check_used_not_defined(const hte_t *hte) return; if ((fcall = hte->h_calls) != NULL) { - /* %s used( %s ), but not defined */ + /* %s is used in %s but never defined */ msg(0, hte->h_name, mkpos(&fcall->f_pos)); } else if ((usym = hte->h_usyms) != NULL) { - /* %s used( %s ), but not defined */ + /* %s is used in %s but never defined */ msg(0, hte->h_name, mkpos(&usym->u_pos)); } } @@ -161,7 +161,7 @@ check_defined_not_used(const hte_t *hte) for (sym = hte->h_syms; sym != NULL; sym = sym->s_next) { if (sym->s_def == DEF || sym->s_def == TDEF) { - /* %s defined( %s ), but never used */ + /* %s is defined in %s but never used */ msg(1, hte->h_name, mkpos(&sym->s_pos)); break; } @@ -186,7 +186,7 @@ check_declared_not_used_or_defined(const if (sym->s_def != DECL) errx(1, "internal error: check_declared_not_used_or_defined"); - /* %s declared( %s ), but never used or defined */ + /* %s is declared in %s but never used or defined */ msg(2, hte->h_name, mkpos(&sym->s_pos)); } @@ -216,7 +216,7 @@ check_multiple_definitions(const hte_t * def1 = sym; continue; } - /* %s multiply defined \t%s :: %s */ + /* %s has multiple definitions in %s and %s */ msg(3, hte->h_name, mkpos(&def1->s_pos), mkpos(&sym->s_pos)); } } @@ -255,28 +255,28 @@ chkvtui(const hte_t *hte, sym_t *def, sy /* no return value used */ if ((t1 == STRUCT || t1 == UNION) && !eq) { /* - * If a function returns a struct or union it + * If a function returns a struct or union, it * must be declared to return a struct or - * union, also if the return value is ignored. + * union, even if the return value is ignored. * This is necessary because the caller must * allocate stack space for the return value. * If it does not, the return value would * overwrite other data. * - * XXX Following message may be confusing - * because it appears also if the return value + * XXX: The following message may be confusing + * because it occurs also if the return value * was declared inconsistently. But this * behavior matches pcc-based lint, so it is * accepted for now. */ - /* %s function value must be declared ... */ + /* %s's return type in %s must be decl... */ msg(17, hte->h_name, mkpos(&def->s_pos), mkpos(&call->f_pos)); } continue; } if (!eq || (sflag && dowarn)) { - /* %s value used inconsistently \t%s :: %s */ + /* %s has its return value used inconsistently ... */ msg(4, hte->h_name, mkpos(&def->s_pos), mkpos(&call->f_pos)); } @@ -315,13 +315,21 @@ chkvtdi(const hte_t *hte, sym_t *def, sy false, false, false, &dowarn); } if (!eq || (sflag && dowarn)) { - /* %s value declared inconsistently (%s != %s) \t... */ - msg(5, hte->h_name, type_name(xt1), type_name(xt2), - mkpos(&def->s_pos), mkpos(&sym->s_pos)); + /* %s returns '%s' at %s, versus '%s' at %s */ + msg(5, hte->h_name, type_name(xt1), mkpos(&def->s_pos), + type_name(xt2), mkpos(&sym->s_pos)); } } } +static int +total_args(int n, type_t **tpp) +{ + for (; *tpp != NULL; tpp++) + n++; + return n; +} + /* * Print a warning if a function is called with arguments which does * not match the function definition, declaration or another call @@ -396,8 +404,9 @@ chkfaui(const hte_t *hte, sym_t *def, sy * prototype. */ } else { - /* %s: variable # of args \t%s :: %s */ - msg(7, hte->h_name, mkpos(pos1p), mkpos(&call->f_pos)); + /* %s has %d parameters in %s, versus %d ... */ + msg(7, hte->h_name, total_args(n, ap1), mkpos(pos1p), + total_args(n, ap2), mkpos(&call->f_pos)); continue; } @@ -578,9 +587,9 @@ chkau(const hte_t *hte, int n, sym_t *de return; } - /* %s, arg %d used inconsistently \t%s[%s] :: %s[%s] */ - msg(6, hte->h_name, n, mkpos(pos1p), type_name(arg1), - mkpos(&call->f_pos), type_name(arg2)); + /* %s has argument %d with type '%s' at %s, versus '%s' at %s */ + msg(6, hte->h_name, n, type_name(arg1), mkpos(pos1p), + type_name(arg2), mkpos(&call->f_pos)); } /* @@ -1009,7 +1018,7 @@ static void bad_format_string(const hte_t *hte, fcall_t *call) { - /* %s: malformed format string \t%s */ + /* %s is called with a malformed format string in %s */ msg(13, hte->h_name, mkpos(&call->f_pos)); } @@ -1017,15 +1026,15 @@ static void inconsistent_arguments(const hte_t *hte, fcall_t *call, int n) { - /* %s, arg %d inconsistent with format \t%s */ - msg(14, hte->h_name, n, mkpos(&call->f_pos)); + /* %s is called in %s with argument %d being incompatible with ... */ + msg(14, hte->h_name, mkpos(&call->f_pos), n); } static void too_few_arguments(const hte_t *hte, fcall_t *call) { - /* %s: too few args for format \t%s */ + /* %s is called in %s with too few arguments for format string */ msg(15, hte->h_name, mkpos(&call->f_pos)); } @@ -1033,7 +1042,7 @@ static void too_many_arguments(const hte_t *hte, fcall_t *call) { - /* %s: too many args for format \t%s */ + /* %s is called in %s with too many arguments for format string */ msg(16, hte->h_name, mkpos(&call->f_pos)); } @@ -1090,17 +1099,17 @@ check_return_values(const hte_t *hte, sy ignored |= !call->f_rused && !call->f_rdisc; } if (!used && ignored) { - /* %s returns value which is always ignored */ + /* %s returns a value that is always ignored */ msg(8, hte->h_name); } else if (used && ignored) { - /* %s returns value which is sometimes ignored */ + /* %s returns a value that is sometimes ignored */ msg(9, hte->h_name); } } else { /* function has no return value */ for (call = hte->h_calls; call != NULL; call = call->f_next) { if (call->f_rused) - /* %s value is used( %s ), but none returned */ + /* %s has its return value used in %s but doesn't return one */ msg(10, hte->h_name, mkpos(&call->f_pos)); } } @@ -1146,10 +1155,10 @@ check_argument_declarations(const hte_t eq = types_compatible(xt1 = *ap1, xt2 = *ap2, true, osdef, false, &dowarn); if (!eq || dowarn) { - /* %s, arg %d declared inconsistently ... */ + /* %s has parameter %d declared as '%s' ... */ msg(11, hte->h_name, n + 1, - type_name(xt1), type_name(xt2), - mkpos(&sym1->s_pos), mkpos(&sym->s_pos)); + type_name(xt1), mkpos(&sym1->s_pos), + type_name(xt2), mkpos(&sym->s_pos)); } n++; ap1++; @@ -1165,8 +1174,10 @@ check_argument_declarations(const hte_t continue; } } - /* %s: variable # of args declared \t%s :: %s */ - msg(12, hte->h_name, mkpos(&sym1->s_pos), mkpos(&sym->s_pos)); + /* %s has %d parameters in %s, versus %d in %s */ + msg(12, hte->h_name, + total_args(n, ap1), mkpos(&sym1->s_pos), + total_args(n, ap2), mkpos(&sym->s_pos)); } } Index: src/usr.bin/xlint/lint2/msg.c diff -u src/usr.bin/xlint/lint2/msg.c:1.25 src/usr.bin/xlint/lint2/msg.c:1.26 --- src/usr.bin/xlint/lint2/msg.c:1.25 Sun Dec 3 18:17:41 2023 +++ src/usr.bin/xlint/lint2/msg.c Sat Nov 30 18:17:12 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: msg.c,v 1.25 2023/12/03 18:17:41 rillig Exp $ */ +/* $NetBSD: msg.c,v 1.26 2024/11/30 18:17:12 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: msg.c,v 1.25 2023/12/03 18:17:41 rillig Exp $"); +__RCSID("$NetBSD: msg.c,v 1.26 2024/11/30 18:17:12 rillig Exp $"); #endif #include <stdarg.h> @@ -46,26 +46,26 @@ __RCSID("$NetBSD: msg.c,v 1.25 2023/12/0 #include "lint2.h" -static const char *msgs[] = { - "%s used( %s ), but not defined", /* 0 */ - "%s defined( %s ), but never used", /* 1 */ - "%s declared( %s ), but never used or defined", /* 2 */ - "%s multiply defined \t%s :: %s", /* 3 */ - "%s value used inconsistently \t%s :: %s", /* 4 */ - "%s value declared inconsistently (%s != %s) \t%s :: %s", /* 5 */ - "%s, arg %d used inconsistently \t%s[%s] :: %s[%s]", /* 6 */ - "%s: variable # of args \t%s :: %s", /* 7 */ - "%s returns value which is always ignored", /* 8 */ - "%s returns value which is sometimes ignored", /* 9 */ - "%s value is used( %s ), but none returned", /* 10 */ - "%s, arg %d declared inconsistently (%s != %s)\t%s :: %s", /* 11 */ - "%s: variable # of args declared \t%s :: %s", /* 12 */ - "%s: malformed format string \t%s", /* 13 */ - "%s, arg %d inconsistent with format \t%s", /* 14 */ - "%s: too few args for format \t%s", /* 15 */ - "%s: too many args for format \t%s", /* 16 */ - "%s function value must be declared before use \t%s :: %s",/* 17 */ - "%s renamed multiple times \t%s :: %s", /* 18 */ +static const char *msgs[] = { + "%s is used in %s but never defined", // 0 + "%s is defined in %s but never used", // 1 + "%s is declared in %s but never used or defined", // 2 + "%s has multiple definitions in %s and %s", // 3 + "%s has its return value used inconsistently by %s and %s", // 4 + "%s returns '%s' at %s, versus '%s' at %s", // 5 + "%s has argument %d with type '%s' at %s, versus '%s' at %s", // 6 + "%s has %d parameters in %s, versus %d arguments in %s", // 7 + "%s returns a value that is always ignored", // 8 + "%s returns a value that is sometimes ignored", // 9 + "%s has its return value used in %s but doesn't return one", // 10 + "%s has parameter %d declared as '%s' in %s, versus '%s' in %s", // 11 + "%s has %d parameters in %s, versus %d in %s", // 12 + "%s is called with a malformed format string in %s", // 13 + "%s is called in %s with argument %d being incompatible with format string", // 14 + "%s is called in %s with too few arguments for format string", // 15 + "%s is called in %s with too many arguments for format string", // 16 + "%s's return type in %s must be declared before use in %s", // 17 + "%s is renamed multiple times in %s and %s", // 18 }; void @@ -76,7 +76,7 @@ msg(int n, ...) va_start(ap, n); (void)vprintf(msgs[n], ap); - (void)printf("\n"); + (void)printf(" [lint2:%03d]\n", n); va_end(ap); } Index: src/usr.bin/xlint/lint2/read.c diff -u src/usr.bin/xlint/lint2/read.c:1.92 src/usr.bin/xlint/lint2/read.c:1.93 --- src/usr.bin/xlint/lint2/read.c:1.92 Sun May 12 18:49:36 2024 +++ src/usr.bin/xlint/lint2/read.c Sat Nov 30 18:17:12 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: read.c,v 1.92 2024/05/12 18:49:36 rillig Exp $ */ +/* $NetBSD: read.c,v 1.93 2024/11/30 18:17:12 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: read.c,v 1.92 2024/05/12 18:49:36 rillig Exp $"); +__RCSID("$NetBSD: read.c,v 1.93 2024/11/30 18:17:12 rillig Exp $"); #endif #include <ctype.h> @@ -496,7 +496,7 @@ decldef(pos_t pos, const char *cp) renamed = true; } else if (hte = renamehte->h_hte, strcmp(hte->h_name, newname) != 0) { - /* %s renamed multiple times \t%s :: %s */ + /* %s is renamed multiple times in %s and %s */ msg(18, tname, mkpos(&renamehte->h_syms->s_pos), mkpos(&sym.s_pos)); }