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 {