Module Name: src
Committed By: rillig
Date: Sun Apr 24 20:08:23 UTC 2022
Modified Files:
src/tests/usr.bin/xlint/lint1: d_compound_literals1.c
d_compound_literals2.c d_gcc_compound_statements1.c decl.c decl.exp
msg_001.c msg_001.exp msg_032.c msg_032.exp msg_053.c msg_053.exp
msg_062.c msg_062.exp msg_216.c msg_216.exp msg_250.c msg_250.exp
src/usr.bin/xlint/lint1: cgram.y
Log Message:
lint: error out on declarations with implicit int type
To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/d_compound_literals1.c \
src/tests/usr.bin/xlint/lint1/d_compound_literals2.c \
src/tests/usr.bin/xlint/lint1/msg_032.c \
src/tests/usr.bin/xlint/lint1/msg_032.exp \
src/tests/usr.bin/xlint/lint1/msg_053.c \
src/tests/usr.bin/xlint/lint1/msg_053.exp \
src/tests/usr.bin/xlint/lint1/msg_062.c \
src/tests/usr.bin/xlint/lint1/msg_062.exp \
src/tests/usr.bin/xlint/lint1/msg_250.c \
src/tests/usr.bin/xlint/lint1/msg_250.exp
cvs rdiff -u -r1.8 -r1.9 \
src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c
cvs rdiff -u -r1.14 -r1.15 src/tests/usr.bin/xlint/lint1/decl.c
cvs rdiff -u -r1.10 -r1.11 src/tests/usr.bin/xlint/lint1/decl.exp
cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/msg_001.c
cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/msg_001.exp
cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/msg_216.c \
src/tests/usr.bin/xlint/lint1/msg_216.exp
cvs rdiff -u -r1.401 -r1.402 src/usr.bin/xlint/lint1/cgram.y
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/tests/usr.bin/xlint/lint1/d_compound_literals1.c
diff -u src/tests/usr.bin/xlint/lint1/d_compound_literals1.c:1.3 src/tests/usr.bin/xlint/lint1/d_compound_literals1.c:1.4
--- src/tests/usr.bin/xlint/lint1/d_compound_literals1.c:1.3 Sun Jan 31 14:57:28 2021
+++ src/tests/usr.bin/xlint/lint1/d_compound_literals1.c Sun Apr 24 20:08:23 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: d_compound_literals1.c,v 1.3 2021/01/31 14:57:28 rillig Exp $ */
+/* $NetBSD: d_compound_literals1.c,v 1.4 2022/04/24 20:08:23 rillig Exp $ */
# 3 "d_compound_literals1.c"
/* compound literals */
@@ -7,7 +7,7 @@ struct p {
short a, b, c, d;
};
-foo()
+void foo(void)
{
struct p me = (struct p){ 1, 2, 3, 4 };
me.a = me.b;
Index: src/tests/usr.bin/xlint/lint1/d_compound_literals2.c
diff -u src/tests/usr.bin/xlint/lint1/d_compound_literals2.c:1.3 src/tests/usr.bin/xlint/lint1/d_compound_literals2.c:1.4
--- src/tests/usr.bin/xlint/lint1/d_compound_literals2.c:1.3 Sun Jan 31 14:57:28 2021
+++ src/tests/usr.bin/xlint/lint1/d_compound_literals2.c Sun Apr 24 20:08:23 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: d_compound_literals2.c,v 1.3 2021/01/31 14:57:28 rillig Exp $ */
+/* $NetBSD: d_compound_literals2.c,v 1.4 2022/04/24 20:08:23 rillig Exp $ */
# 3 "d_compound_literals2.c"
/* compound literals */
@@ -16,7 +16,7 @@ bar(int i)
return &q[i];
}
-foo()
+void foo(void)
{
*bar(1) = (struct p){ 1, 2, 3, 4 };
}
Index: src/tests/usr.bin/xlint/lint1/msg_032.c
diff -u src/tests/usr.bin/xlint/lint1/msg_032.c:1.3 src/tests/usr.bin/xlint/lint1/msg_032.c:1.4
--- src/tests/usr.bin/xlint/lint1/msg_032.c:1.3 Tue Apr 5 23:09:19 2022
+++ src/tests/usr.bin/xlint/lint1/msg_032.c Sun Apr 24 20:08:23 2022
@@ -1,8 +1,9 @@
-/* $NetBSD: msg_032.c,v 1.3 2022/04/05 23:09:19 rillig Exp $ */
+/* $NetBSD: msg_032.c,v 1.4 2022/04/24 20:08:23 rillig Exp $ */
# 3 "msg_032.c"
// Test for message: argument type defaults to 'int': %s [32]
+/* expect+5: error: old style declaration; add 'int' [1] */
add(a, b, c)
/* expect+3: warning: argument type defaults to 'int': a [32] */
/* expect+2: warning: argument type defaults to 'int': b [32] */
Index: src/tests/usr.bin/xlint/lint1/msg_032.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_032.exp:1.3 src/tests/usr.bin/xlint/lint1/msg_032.exp:1.4
--- src/tests/usr.bin/xlint/lint1/msg_032.exp:1.3 Tue Apr 5 23:09:19 2022
+++ src/tests/usr.bin/xlint/lint1/msg_032.exp Sun Apr 24 20:08:23 2022
@@ -1,3 +1,4 @@
-msg_032.c(10): warning: argument type defaults to 'int': a [32]
-msg_032.c(10): warning: argument type defaults to 'int': b [32]
-msg_032.c(10): warning: argument type defaults to 'int': c [32]
+msg_032.c(11): error: old style declaration; add 'int' [1]
+msg_032.c(11): warning: argument type defaults to 'int': a [32]
+msg_032.c(11): warning: argument type defaults to 'int': b [32]
+msg_032.c(11): warning: argument type defaults to 'int': c [32]
Index: src/tests/usr.bin/xlint/lint1/msg_053.c
diff -u src/tests/usr.bin/xlint/lint1/msg_053.c:1.3 src/tests/usr.bin/xlint/lint1/msg_053.c:1.4
--- src/tests/usr.bin/xlint/lint1/msg_053.c:1.3 Fri Aug 27 20:16:50 2021
+++ src/tests/usr.bin/xlint/lint1/msg_053.c Sun Apr 24 20:08:23 2022
@@ -1,8 +1,9 @@
-/* $NetBSD: msg_053.c,v 1.3 2021/08/27 20:16:50 rillig Exp $ */
+/* $NetBSD: msg_053.c,v 1.4 2022/04/24 20:08:23 rillig Exp $ */
# 3 "msg_053.c"
// Test for message: declared argument %s is missing [53]
+/* expect+2: error: old style declaration; add 'int' [1] */
oldstyle(argument)
int argument;
/* expect+1: error: declared argument extra_argument is missing [53] */
Index: src/tests/usr.bin/xlint/lint1/msg_053.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_053.exp:1.3 src/tests/usr.bin/xlint/lint1/msg_053.exp:1.4
--- src/tests/usr.bin/xlint/lint1/msg_053.exp:1.3 Fri Aug 27 20:16:50 2021
+++ src/tests/usr.bin/xlint/lint1/msg_053.exp Sun Apr 24 20:08:23 2022
@@ -1 +1,2 @@
-msg_053.c(9): error: declared argument extra_argument is missing [53]
+msg_053.c(8): error: old style declaration; add 'int' [1]
+msg_053.c(10): error: declared argument extra_argument is missing [53]
Index: src/tests/usr.bin/xlint/lint1/msg_062.c
diff -u src/tests/usr.bin/xlint/lint1/msg_062.c:1.3 src/tests/usr.bin/xlint/lint1/msg_062.c:1.4
--- src/tests/usr.bin/xlint/lint1/msg_062.c:1.3 Sun Feb 27 20:02:44 2022
+++ src/tests/usr.bin/xlint/lint1/msg_062.c Sun Apr 24 20:08:23 2022
@@ -1,8 +1,9 @@
-/* $NetBSD: msg_062.c,v 1.3 2022/02/27 20:02:44 rillig Exp $ */
+/* $NetBSD: msg_062.c,v 1.4 2022/04/24 20:08:23 rillig Exp $ */
# 3 "msg_062.c"
// Test for message: function prototype parameters must have types [62]
+/* expect+1: error: old style declaration; add 'int' [1] */
outer() {
/* expect+2: warning: function prototype parameters must have types [62] */
/* expect+1: warning: dubious static function at block level: inner [93] */
Index: src/tests/usr.bin/xlint/lint1/msg_062.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_062.exp:1.3 src/tests/usr.bin/xlint/lint1/msg_062.exp:1.4
--- src/tests/usr.bin/xlint/lint1/msg_062.exp:1.3 Sun Feb 27 20:02:44 2022
+++ src/tests/usr.bin/xlint/lint1/msg_062.exp Sun Apr 24 20:08:23 2022
@@ -1,2 +1,3 @@
-msg_062.c(9): warning: function prototype parameters must have types [62]
-msg_062.c(9): warning: dubious static function at block level: inner [93]
+msg_062.c(7): error: old style declaration; add 'int' [1]
+msg_062.c(10): warning: function prototype parameters must have types [62]
+msg_062.c(10): warning: dubious static function at block level: inner [93]
Index: src/tests/usr.bin/xlint/lint1/msg_250.c
diff -u src/tests/usr.bin/xlint/lint1/msg_250.c:1.3 src/tests/usr.bin/xlint/lint1/msg_250.c:1.4
--- src/tests/usr.bin/xlint/lint1/msg_250.c:1.3 Tue Jun 29 07:17:43 2021
+++ src/tests/usr.bin/xlint/lint1/msg_250.c Sun Apr 24 20:08:23 2022
@@ -1,7 +1,10 @@
-/* $NetBSD: msg_250.c,v 1.3 2021/06/29 07:17:43 rillig Exp $ */
+/* $NetBSD: msg_250.c,v 1.4 2022/04/24 20:08:23 rillig Exp $ */
# 3 "msg_250.c"
// Test for message: unknown character \%o [250]
-@deprecated /* expect: unknown character \100 [250] */
-char *gets(void); /* expect: syntax error 'char' [249] */
+/* expect+1: unknown character \100 [250] */
+@deprecated
+/* expect+2: error: old style declaration; add 'int' [1] */
+/* expect+1: syntax error 'char' [249] */
+char *gets(void);
Index: src/tests/usr.bin/xlint/lint1/msg_250.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_250.exp:1.3 src/tests/usr.bin/xlint/lint1/msg_250.exp:1.4
--- src/tests/usr.bin/xlint/lint1/msg_250.exp:1.3 Tue Jun 29 07:17:43 2021
+++ src/tests/usr.bin/xlint/lint1/msg_250.exp Sun Apr 24 20:08:23 2022
@@ -1,2 +1,3 @@
-msg_250.c(6): error: unknown character \100 [250]
-msg_250.c(7): error: syntax error 'char' [249]
+msg_250.c(7): error: unknown character \100 [250]
+msg_250.c(10): error: old style declaration; add 'int' [1]
+msg_250.c(10): error: syntax error 'char' [249]
Index: src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c
diff -u src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c:1.8 src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c:1.9
--- src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c:1.8 Sun Apr 3 00:39:32 2022
+++ src/tests/usr.bin/xlint/lint1/d_gcc_compound_statements1.c Sun Apr 24 20:08:23 2022
@@ -1,9 +1,9 @@
-/* $NetBSD: d_gcc_compound_statements1.c,v 1.8 2022/04/03 00:39:32 rillig Exp $ */
+/* $NetBSD: d_gcc_compound_statements1.c,v 1.9 2022/04/24 20:08:23 rillig Exp $ */
# 3 "d_gcc_compound_statements1.c"
/* GCC compound statement with expression */
-foo(unsigned long z)
+void foo(unsigned long z)
{
z = ({
unsigned long tmp;
Index: src/tests/usr.bin/xlint/lint1/decl.c
diff -u src/tests/usr.bin/xlint/lint1/decl.c:1.14 src/tests/usr.bin/xlint/lint1/decl.c:1.15
--- src/tests/usr.bin/xlint/lint1/decl.c:1.14 Sun Apr 24 19:21:01 2022
+++ src/tests/usr.bin/xlint/lint1/decl.c Sun Apr 24 20:08:23 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: decl.c,v 1.14 2022/04/24 19:21:01 rillig Exp $ */
+/* $NetBSD: decl.c,v 1.15 2022/04/24 20:08:23 rillig Exp $ */
# 3 "decl.c"
/*
@@ -159,12 +159,15 @@ unsigned long sizes =
sizeof(const typeof(unsigned_long)) +
sizeof(const typeof(unnamed_struct));
+/* expect+2: error: old style declaration; add 'int' [1] */
/* expect+1: 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] */
__thread__ int thread_int;
+/* expect+4: error: old style declaration; add 'int' [1] */
/* expect+2: warning: static function cover_func_declarator unused [236] */
static
cover_func_declarator(void)
Index: src/tests/usr.bin/xlint/lint1/decl.exp
diff -u src/tests/usr.bin/xlint/lint1/decl.exp:1.10 src/tests/usr.bin/xlint/lint1/decl.exp:1.11
--- src/tests/usr.bin/xlint/lint1/decl.exp:1.10 Sun Apr 24 19:21:01 2022
+++ src/tests/usr.bin/xlint/lint1/decl.exp Sun Apr 24 20:08:23 2022
@@ -10,9 +10,12 @@ decl.c(70): warning: illegal combination
decl.c(72): warning: converting 'pointer to pointer to char' to incompatible 'pointer to double' for argument 1 [153]
decl.c(80): error: syntax error '"' [249]
decl.c(106): error: old style declaration; add 'int' [1]
-decl.c(163): error: syntax error 'int' [249]
-decl.c(166): error: syntax error 'int' [249]
-decl.c(180): error: syntax error 'goto' [249]
+decl.c(164): error: old style declaration; add 'int' [1]
+decl.c(164): error: syntax error 'int' [249]
+decl.c(168): error: old style declaration; add 'int' [1]
+decl.c(168): error: syntax error 'int' [249]
+decl.c(174): error: old style declaration; add 'int' [1]
+decl.c(183): error: syntax error 'goto' [249]
decl.c(114): warning: static function unused unused [236]
-decl.c(170): warning: static function cover_func_declarator unused [236]
-decl.c(180): warning: empty array declaration: void_array_error [190]
+decl.c(173): warning: static function cover_func_declarator unused [236]
+decl.c(183): warning: empty array declaration: void_array_error [190]
Index: src/tests/usr.bin/xlint/lint1/msg_001.c
diff -u src/tests/usr.bin/xlint/lint1/msg_001.c:1.5 src/tests/usr.bin/xlint/lint1/msg_001.c:1.6
--- src/tests/usr.bin/xlint/lint1/msg_001.c:1.5 Sun Apr 24 19:46:29 2022
+++ src/tests/usr.bin/xlint/lint1/msg_001.c Sun Apr 24 20:08:23 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: msg_001.c,v 1.5 2022/04/24 19:46:29 rillig Exp $ */
+/* $NetBSD: msg_001.c,v 1.6 2022/04/24 20:08:23 rillig Exp $ */
# 3 "msg_001.c"
// Test for message: old style declaration; add 'int' [1]
@@ -15,12 +15,12 @@ static static_old_style = 1;
/* expect+1: warning: static variable static_new_style unused [226] */
static int static_new_style = 1;
-/* TODO: complain about missing 'int' */
+/* expect+2: error: old style declaration; add 'int' [1] */
extern_implicit_int(void)
{
}
-/* TODO: complain about missing 'int' */
+/* expect+4: error: old style declaration; add 'int' [1] */
/* expect+2: warning: static function static_implicit_int unused [236] */
static
static_implicit_int(void)
Index: src/tests/usr.bin/xlint/lint1/msg_001.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_001.exp:1.4 src/tests/usr.bin/xlint/lint1/msg_001.exp:1.5
--- src/tests/usr.bin/xlint/lint1/msg_001.exp:1.4 Sun Apr 24 19:46:29 2022
+++ src/tests/usr.bin/xlint/lint1/msg_001.exp Sun Apr 24 20:08:23 2022
@@ -1,5 +1,7 @@
msg_001.c(7): warning: old style declaration; add 'int' [1]
msg_001.c(13): error: old style declaration; add 'int' [1]
+msg_001.c(20): error: old style declaration; add 'int' [1]
+msg_001.c(27): error: old style declaration; add 'int' [1]
msg_001.c(13): warning: static variable static_old_style unused [226]
msg_001.c(16): warning: static variable static_new_style unused [226]
msg_001.c(26): warning: static function static_implicit_int unused [236]
Index: src/tests/usr.bin/xlint/lint1/msg_216.c
diff -u src/tests/usr.bin/xlint/lint1/msg_216.c:1.2 src/tests/usr.bin/xlint/lint1/msg_216.c:1.3
--- src/tests/usr.bin/xlint/lint1/msg_216.c:1.2 Sat Jan 30 17:02:58 2021
+++ src/tests/usr.bin/xlint/lint1/msg_216.c Sun Apr 24 20:08:23 2022
@@ -1,9 +1,9 @@
-/* $NetBSD: msg_216.c,v 1.2 2021/01/30 17:02:58 rillig Exp $ */
+/* $NetBSD: msg_216.c,v 1.3 2022/04/24 20:08:23 rillig Exp $ */
# 3 "msg_216.c"
// Test for message: function %s has return (e); and return; [216]
-/* implicit int */
+/* expect+2: error: old style declaration; add 'int' [1] */
random(int n)
{
if (n < 0)
Index: src/tests/usr.bin/xlint/lint1/msg_216.exp
diff -u src/tests/usr.bin/xlint/lint1/msg_216.exp:1.2 src/tests/usr.bin/xlint/lint1/msg_216.exp:1.3
--- src/tests/usr.bin/xlint/lint1/msg_216.exp:1.2 Sat Jan 30 17:02:58 2021
+++ src/tests/usr.bin/xlint/lint1/msg_216.exp Sun Apr 24 20:08:23 2022
@@ -1 +1,2 @@
+msg_216.c(8): error: old style declaration; add 'int' [1]
msg_216.c(13): warning: function random has return (e); and return; [216]
Index: src/usr.bin/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.401 src/usr.bin/xlint/lint1/cgram.y:1.402
--- src/usr.bin/xlint/lint1/cgram.y:1.401 Sun Apr 24 19:21:01 2022
+++ src/usr.bin/xlint/lint1/cgram.y Sun Apr 24 20:08:22 2022
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: cgram.y,v 1.401 2022/04/24 19:21:01 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.402 2022/04/24 20:08:22 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -35,7 +35,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: cgram.y,v 1.401 2022/04/24 19:21:01 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.402 2022/04/24 20:08:22 rillig Exp $");
#endif
#include <limits.h>
@@ -416,7 +416,7 @@ string:
/* K&R 7.1, C90 ???, C99 6.5.1, C11 6.5.1 */
primary_expression:
T_NAME {
- bool sys_name, sys_next;
+ bool sys_name, sys_next;
sys_name = in_system_header;
if (yychar < 0)
yychar = yylex();
@@ -1597,7 +1597,7 @@ designator: /* C99 6.7.8 "Initializati
static_assert_declaration:
T_STATIC_ASSERT T_LPAREN constant_expr T_COMMA T_STRING T_RPAREN T_SEMI /* C11 */
| T_STATIC_ASSERT T_LPAREN constant_expr T_RPAREN T_SEMI /* C23 */
- ;
+ ;
range:
constant_expr {
@@ -1990,11 +1990,17 @@ function_definition: /* C99 6.9.1 */
func_declarator:
begin_type end_type notype_declarator {
- /* ^^ There is no check for the missing type-specifier. */
+ if (!allow_trad) {
+ /* old style declaration; add 'int' */
+ error(1);
+ }
$$ = $3;
}
| begin_type_declmods end_type notype_declarator {
- /* ^^ There is no check for the missing type-specifier. */
+ if (!allow_trad) {
+ /* old style declaration; add 'int' */
+ error(1);
+ }
$$ = $3;
}
| begin_type_declaration_specifiers end_type type_declarator {