Module Name: src Committed By: rillig Date: Sun Apr 24 19:21:01 UTC 2022
Modified Files: src/tests/usr.bin/xlint/lint1: decl.c decl.exp emit.c emit.exp msg_007.c msg_007.exp msg_030.c msg_030.exp msg_072.c msg_072.exp src/usr.bin/xlint/lint1: cgram.y Log Message: lint: error out on missing type in declarations To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/tests/usr.bin/xlint/lint1/decl.c cvs rdiff -u -r1.9 -r1.10 src/tests/usr.bin/xlint/lint1/decl.exp cvs rdiff -u -r1.10 -r1.11 src/tests/usr.bin/xlint/lint1/emit.c cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/emit.exp cvs rdiff -u -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/msg_007.c \ src/tests/usr.bin/xlint/lint1/msg_007.exp \ src/tests/usr.bin/xlint/lint1/msg_030.c \ src/tests/usr.bin/xlint/lint1/msg_030.exp cvs rdiff -u -r1.5 -r1.6 src/tests/usr.bin/xlint/lint1/msg_072.c cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/msg_072.exp cvs rdiff -u -r1.400 -r1.401 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/decl.c diff -u src/tests/usr.bin/xlint/lint1/decl.c:1.13 src/tests/usr.bin/xlint/lint1/decl.c:1.14 --- src/tests/usr.bin/xlint/lint1/decl.c:1.13 Sun Apr 3 10:05:23 2022 +++ src/tests/usr.bin/xlint/lint1/decl.c Sun Apr 24 19:21:01 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: decl.c,v 1.13 2022/04/03 10:05:23 rillig Exp $ */ +/* $NetBSD: decl.c,v 1.14 2022/04/24 19:21:01 rillig Exp $ */ # 3 "decl.c" /* @@ -104,7 +104,7 @@ int declaration_without_type_specifier(void) { const i = 3; - + /* expect-1: error: old style declaration; add 'int' [1] */ return i; } Index: src/tests/usr.bin/xlint/lint1/decl.exp diff -u src/tests/usr.bin/xlint/lint1/decl.exp:1.9 src/tests/usr.bin/xlint/lint1/decl.exp:1.10 --- src/tests/usr.bin/xlint/lint1/decl.exp:1.9 Sun Apr 3 10:05:23 2022 +++ src/tests/usr.bin/xlint/lint1/decl.exp Sun Apr 24 19:21:01 2022 @@ -9,6 +9,7 @@ decl.c(68): warning: converting 'pointer decl.c(70): warning: illegal combination of pointer (pointer to double) and integer (char), arg #1 [154] 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] Index: src/tests/usr.bin/xlint/lint1/emit.c diff -u src/tests/usr.bin/xlint/lint1/emit.c:1.10 src/tests/usr.bin/xlint/lint1/emit.c:1.11 --- src/tests/usr.bin/xlint/lint1/emit.c:1.10 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/emit.c Sun Apr 24 19:21:01 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: emit.c,v 1.10 2022/01/15 14:22:03 rillig Exp $ */ +/* $NetBSD: emit.c,v 1.11 2022/04/24 19:21:01 rillig Exp $ */ # 3 "emit.c" /* @@ -121,7 +121,7 @@ extern const volatile int extern_const_v extern void return_void_unknown_parameters(); extern /* implicit int */ return_implicit_int_unknown_parameters(); - +/* expect-1: error: old style declaration; add 'int' [1] */ /* For function declarations, the keyword 'extern' is optional. */ extern void extern_return_void_no_parameters(void); /* implicit extern */ void return_void_no_parameters(void); Index: src/tests/usr.bin/xlint/lint1/emit.exp diff -u src/tests/usr.bin/xlint/lint1/emit.exp:1.2 src/tests/usr.bin/xlint/lint1/emit.exp:1.3 --- src/tests/usr.bin/xlint/lint1/emit.exp:1.2 Sat Jan 15 14:22:03 2022 +++ src/tests/usr.bin/xlint/lint1/emit.exp Sun Apr 24 19:21:01 2022 @@ -1,3 +1,4 @@ +emit.c(123): error: old style declaration; add 'int' [1] emit.c(108): warning: static variable static_int unused [226] emit.c(129): warning: static function static_return_void_no_parameters declared but not defined [290] emit.c(149): warning: static function static_function declared but not defined [290] Index: src/tests/usr.bin/xlint/lint1/msg_007.c diff -u src/tests/usr.bin/xlint/lint1/msg_007.c:1.3 src/tests/usr.bin/xlint/lint1/msg_007.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_007.c:1.3 Sun Jan 31 11:12:07 2021 +++ src/tests/usr.bin/xlint/lint1/msg_007.c Sun Apr 24 19:21:01 2022 @@ -1,7 +1,10 @@ -/* $NetBSD: msg_007.c,v 1.3 2021/01/31 11:12:07 rillig Exp $ */ +/* $NetBSD: msg_007.c,v 1.4 2022/04/24 19:21:01 rillig Exp $ */ # 3 "msg_007.c" // Test for message: only one storage class allowed [7] -extern static void example(void); /* expect: 7 */ +/* expect+1: error: only one storage class allowed [7] */ +extern static void example(void); + +/* expect+1: error: old style declaration; add 'int' [1] */ extern extern_function(void); Index: src/tests/usr.bin/xlint/lint1/msg_007.exp diff -u src/tests/usr.bin/xlint/lint1/msg_007.exp:1.3 src/tests/usr.bin/xlint/lint1/msg_007.exp:1.4 --- src/tests/usr.bin/xlint/lint1/msg_007.exp:1.3 Sun Mar 21 20:44:59 2021 +++ src/tests/usr.bin/xlint/lint1/msg_007.exp Sun Apr 24 19:21:01 2022 @@ -1 +1,2 @@ -msg_007.c(6): error: only one storage class allowed [7] +msg_007.c(7): error: only one storage class allowed [7] +msg_007.c(10): error: old style declaration; add 'int' [1] Index: src/tests/usr.bin/xlint/lint1/msg_030.c diff -u src/tests/usr.bin/xlint/lint1/msg_030.c:1.3 src/tests/usr.bin/xlint/lint1/msg_030.c:1.4 --- src/tests/usr.bin/xlint/lint1/msg_030.c:1.3 Tue Apr 5 23:09:19 2022 +++ src/tests/usr.bin/xlint/lint1/msg_030.c Sun Apr 24 19:21:01 2022 @@ -1,18 +1,21 @@ -/* $NetBSD: msg_030.c,v 1.3 2022/04/05 23:09:19 rillig Exp $ */ +/* $NetBSD: msg_030.c,v 1.4 2022/04/24 19:21:01 rillig Exp $ */ # 3 "msg_030.c" /* Test for message: redeclaration of %s; ANSI C requires static [30] */ /* lint1-flags: -sw */ +/* expect+1: error: old style declaration; add 'int' [1] */ static a; /* expect+1: warning: redeclaration of a; ANSI C requires static [30] */ int a; +/* expect+1: error: old style declaration; add 'int' [1] */ static b; /* expect+1: warning: redeclaration of b; ANSI C requires static [30] */ int b = 1; +/* expect+1: error: old style declaration; add 'int' [1] */ static c = 1; /* expect+1: warning: redeclaration of c; ANSI C requires static [30] */ int c; Index: src/tests/usr.bin/xlint/lint1/msg_030.exp diff -u src/tests/usr.bin/xlint/lint1/msg_030.exp:1.3 src/tests/usr.bin/xlint/lint1/msg_030.exp:1.4 --- src/tests/usr.bin/xlint/lint1/msg_030.exp:1.3 Tue Apr 5 23:09:19 2022 +++ src/tests/usr.bin/xlint/lint1/msg_030.exp Sun Apr 24 19:21:01 2022 @@ -1,3 +1,6 @@ -msg_030.c(10): warning: redeclaration of a; ANSI C requires static [30] -msg_030.c(14): warning: redeclaration of b; ANSI C requires static [30] -msg_030.c(18): warning: redeclaration of c; ANSI C requires static [30] +msg_030.c(9): error: old style declaration; add 'int' [1] +msg_030.c(11): warning: redeclaration of a; ANSI C requires static [30] +msg_030.c(14): error: old style declaration; add 'int' [1] +msg_030.c(16): warning: redeclaration of b; ANSI C requires static [30] +msg_030.c(19): error: old style declaration; add 'int' [1] +msg_030.c(21): warning: redeclaration of c; ANSI C requires static [30] Index: src/tests/usr.bin/xlint/lint1/msg_072.c diff -u src/tests/usr.bin/xlint/lint1/msg_072.c:1.5 src/tests/usr.bin/xlint/lint1/msg_072.c:1.6 --- src/tests/usr.bin/xlint/lint1/msg_072.c:1.5 Wed Jul 14 20:39:13 2021 +++ src/tests/usr.bin/xlint/lint1/msg_072.c Sun Apr 24 19:21:01 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_072.c,v 1.5 2021/07/14 20:39:13 rillig Exp $ */ +/* $NetBSD: msg_072.c,v 1.6 2022/04/24 19:21:01 rillig Exp $ */ # 3 "msg_072.c" // Test for message: typedef declares no type name [72] @@ -26,4 +26,10 @@ cover_cgram_declaration(void) /* expect+1: warning: empty declaration [2] */ int; + + /* expect+1: error: syntax error 'missing base type for typedef' [249] */ + typedef not_a_type; + + /* expect+1: error: old style declaration; add 'int' [1] */ + static missing_type; } Index: src/tests/usr.bin/xlint/lint1/msg_072.exp diff -u src/tests/usr.bin/xlint/lint1/msg_072.exp:1.4 src/tests/usr.bin/xlint/lint1/msg_072.exp:1.5 --- src/tests/usr.bin/xlint/lint1/msg_072.exp:1.4 Wed Jul 14 20:39:13 2021 +++ src/tests/usr.bin/xlint/lint1/msg_072.exp Sun Apr 24 19:21:01 2022 @@ -4,3 +4,5 @@ msg_072.c(19): warning: typedef declares msg_072.c(22): warning: empty declaration [2] msg_072.c(25): warning: typedef declares no type name [72] msg_072.c(28): warning: empty declaration [2] +msg_072.c(31): error: syntax error 'missing base type for typedef' [249] +msg_072.c(34): error: old style declaration; add 'int' [1] Index: src/usr.bin/xlint/lint1/cgram.y diff -u src/usr.bin/xlint/lint1/cgram.y:1.400 src/usr.bin/xlint/lint1/cgram.y:1.401 --- src/usr.bin/xlint/lint1/cgram.y:1.400 Sun Apr 24 17:32:22 2022 +++ src/usr.bin/xlint/lint1/cgram.y Sun Apr 24 19:21:01 2022 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.400 2022/04/24 17:32:22 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.401 2022/04/24 19:21:01 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.400 2022/04/24 17:32:22 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.401 2022/04/24 19:21:01 rillig Exp $"); #endif #include <limits.h> @@ -745,8 +745,15 @@ declaration: /* C99 6.7 */ warning(2); } } - | begin_type_declmods end_type notype_init_declarators T_SEMI - /* ^^ There is no check for the missing type-specifier. */ + | begin_type_declmods end_type notype_init_declarators T_SEMI { + if (dcs->d_scl == TYPEDEF) { + /* syntax error '%s' */ + error(249, "missing base type for typedef"); + } else { + /* old style declaration; add 'int' */ + error(1); + } + } | begin_type_declaration_specifiers end_type T_SEMI { if (dcs->d_scl == TYPEDEF) { /* typedef declares no type name */