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 {

Reply via email to