Thu Jul 15 20:05:49 2021 UTC ()
lint: remove message 66 about missing semicolon in struct-declaration


(rillig)
diff -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/decl_struct_c90.c
diff -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/decl_struct_c90.exp
diff -r1.7 -r1.8 src/tests/usr.bin/xlint/lint1/decl_struct_member.c
diff -r1.6 -r1.7 src/tests/usr.bin/xlint/lint1/decl_struct_member.exp
diff -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/msg_066.c
diff -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/msg_066.exp
diff -r1.327 -r1.328 src/usr.bin/xlint/lint1/cgram.y
diff -r1.129 -r1.130 src/usr.bin/xlint/lint1/err.c

cvs diff -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/decl_struct_c90.c (expand / switch to unified diff)

--- src/tests/usr.bin/xlint/lint1/decl_struct_c90.c 2021/07/15 19:51:29 1.1
+++ src/tests/usr.bin/xlint/lint1/decl_struct_c90.c 2021/07/15 20:05:49 1.2
@@ -1,18 +1,21 @@ @@ -1,18 +1,21 @@
1/* $NetBSD: decl_struct_c90.c,v 1.1 2021/07/15 19:51:29 rillig Exp $ */ 1/* $NetBSD: decl_struct_c90.c,v 1.2 2021/07/15 20:05:49 rillig Exp $ */
2# 3 "decl_struct_c90.c" 2# 3 "decl_struct_c90.c"
3 3
4/* 4/*
5 * Test declaration of struct types, in C90 without any GNU extensions. 5 * Test declaration of struct types, in C90 without any GNU extensions.
6 */ 6 */
7 7
8/* lint1-flags: -sw */ 8/* lint1-flags: -sw */
9 9
10/* 10/*
11 * All of K&R, C90, C99 require that a struct member declaration is 11 * All of K&R, C90, C99 require that a struct member declaration is
12 * terminated with a semicolon. No idea why lint allows the missing 12 * terminated with a semicolon.
13 * semicolon in non-C90 mode. 13 *
 14 * Before cgram.y 1.328 from 2021-07-15, lint allowed the missing semicolon
 15 * in non-C90 mode, no idea why.
14 */ 16 */
15struct missing_semicolon { 17struct missing_semicolon {
16 int member 18 int member
17}; 19};
18/* expect-1: error: syntax requires ';' after last struct/union member [66] */ 20/* expect-1: error: syntax error '}' [249] */
 21/* expect+1: error: cannot recover from previous errors [224] */

cvs diff -r1.1 -r1.2 src/tests/usr.bin/xlint/lint1/Attic/decl_struct_c90.exp (expand / switch to unified diff)

--- src/tests/usr.bin/xlint/lint1/Attic/decl_struct_c90.exp 2021/07/15 19:51:29 1.1
+++ src/tests/usr.bin/xlint/lint1/Attic/decl_struct_c90.exp 2021/07/15 20:05:49 1.2

cvs diff -r1.7 -r1.8 src/tests/usr.bin/xlint/lint1/decl_struct_member.c (expand / switch to unified diff)

--- src/tests/usr.bin/xlint/lint1/decl_struct_member.c 2021/07/15 19:51:29 1.7
+++ src/tests/usr.bin/xlint/lint1/decl_struct_member.c 2021/07/15 20:05:49 1.8
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: decl_struct_member.c,v 1.7 2021/07/15 19:51:29 rillig Exp $ */ 1/* $NetBSD: decl_struct_member.c,v 1.8 2021/07/15 20:05:49 rillig Exp $ */
2# 3 "decl_struct_member.c" 2# 3 "decl_struct_member.c"
3 3
4struct multi_attributes { 4struct multi_attributes {
5 __attribute__((deprecated)) 5 __attribute__((deprecated))
6 __attribute__((deprecated)) 6 __attribute__((deprecated))
7 __attribute__((deprecated)) 7 __attribute__((deprecated))
8 int deprecated; 8 int deprecated;
9}; 9};
10 10
11struct cover_begin_type_noclass_declspecs { 11struct cover_begin_type_noclass_declspecs {
12 int m1; 12 int m1;
13 __attribute__((deprecated)) int m2; 13 __attribute__((deprecated)) int m2;
14 const int m3; 14 const int m3;
@@ -42,20 +42,20 @@ struct goto { @@ -42,20 +42,20 @@ struct goto {
42 * Before cgram.y 1.228 from 2021-06-19, lint ran into an assertion failure: 42 * Before cgram.y 1.228 from 2021-06-19, lint ran into an assertion failure:
43 * 43 *
44 * "is_struct_or_union(dcs->d_type->t_tspec)" at cgram.y:846 44 * "is_struct_or_union(dcs->d_type->t_tspec)" at cgram.y:846
45 */ 45 */
46struct { 46struct {
47 char; /* expect: syntax error 'unnamed member' */ 47 char; /* expect: syntax error 'unnamed member' */
48}; 48};
49 49
50/* 50/*
51 * Before decl.c 1.188 from 2021-06-20, lint ran into a segmentation fault. 51 * Before decl.c 1.188 from 2021-06-20, lint ran into a segmentation fault.
52 */ 52 */
53struct { 53struct {
54 char a(_)0 /* expect: syntax error '0' */ 54 char a(_)0 /* expect: syntax error '0' */
55} /* expect: ';' after last */ 55}
56/* 56/*
57 * FIXME: adding a semicolon here triggers another assertion: 57 * FIXME: adding a semicolon here triggers another assertion:
58 * 58 *
59 * assertion "t == NOTSPEC" failed in end_type at decl.c:774 59 * assertion "t == NOTSPEC" failed in end_type at decl.c:774
60 */ 60 */
61/* expect+1: cannot recover from previous errors */ 61/* expect+1: cannot recover from previous errors */

cvs diff -r1.6 -r1.7 src/tests/usr.bin/xlint/lint1/Attic/decl_struct_member.exp (expand / switch to unified diff)

--- src/tests/usr.bin/xlint/lint1/Attic/decl_struct_member.exp 2021/07/15 19:51:29 1.6
+++ src/tests/usr.bin/xlint/lint1/Attic/decl_struct_member.exp 2021/07/15 20:05:49 1.7
@@ -1,8 +1,7 @@ @@ -1,8 +1,7 @@
1decl_struct_member.c(34): error: syntax error 'goto' [249] 1decl_struct_member.c(34): error: syntax error 'goto' [249]
2decl_struct_member.c(36): error: illegal type combination [4] 2decl_struct_member.c(36): error: illegal type combination [4]
3decl_struct_member.c(38): error: syntax error '}' [249] 3decl_struct_member.c(38): error: syntax error '}' [249]
4decl_struct_member.c(38): warning: empty declaration [0] 4decl_struct_member.c(38): warning: empty declaration [0]
5decl_struct_member.c(47): error: syntax error 'unnamed member' [249] 5decl_struct_member.c(47): error: syntax error 'unnamed member' [249]
6decl_struct_member.c(54): error: syntax error '0' [249] 6decl_struct_member.c(54): error: syntax error '0' [249]
7decl_struct_member.c(55): warning: syntax requires ';' after last struct/union member [66] 
8decl_struct_member.c(62): error: cannot recover from previous errors [224] 7decl_struct_member.c(62): error: cannot recover from previous errors [224]

cvs diff -r1.3 -r1.4 src/tests/usr.bin/xlint/lint1/msg_066.c (expand / switch to unified diff)

--- src/tests/usr.bin/xlint/lint1/msg_066.c 2021/01/31 11:12:07 1.3
+++ src/tests/usr.bin/xlint/lint1/msg_066.c 2021/07/15 20:05:49 1.4
@@ -1,8 +1,15 @@ @@ -1,8 +1,15 @@
1/* $NetBSD: msg_066.c,v 1.3 2021/01/31 11:12:07 rillig Exp $ */ 1/* $NetBSD: msg_066.c,v 1.4 2021/07/15 20:05:49 rillig Exp $ */
2# 3 "msg_066.c" 2# 3 "msg_066.c"
3 3
4// Test for message: syntax requires ';' after last struct/union member [66] 4// Test for message: syntax requires ';' after last struct/union member [66]
5 5
 6/*
 7 * This message was removed in cgram.y 1.328 from 2021-07-15 because all
 8 * C standards and even K&R require a semicolon.
 9 */
 10
6struct number { 11struct number {
7 int value 12 int value
8}; /* expect: 66 */ 13};
 14/* expect-1: syntax error '}' [249] */
 15/* expect+1: error: cannot recover from previous errors [224] */

cvs diff -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/Attic/msg_066.exp (expand / switch to unified diff)

--- src/tests/usr.bin/xlint/lint1/Attic/msg_066.exp 2021/01/08 21:25:03 1.2
+++ src/tests/usr.bin/xlint/lint1/Attic/msg_066.exp 2021/07/15 20:05:49 1.3

cvs diff -r1.327 -r1.328 src/usr.bin/xlint/lint1/cgram.y (expand / switch to unified diff)

--- src/usr.bin/xlint/lint1/cgram.y 2021/07/15 18:18:15 1.327
+++ src/usr.bin/xlint/lint1/cgram.y 2021/07/15 20:05:49 1.328
@@ -1,15 +1,15 @@ @@ -1,15 +1,15 @@
1%{ 1%{
2/* $NetBSD: cgram.y,v 1.327 2021/07/15 18:18:15 rillig Exp $ */ 2/* $NetBSD: cgram.y,v 1.328 2021/07/15 20:05:49 rillig Exp $ */
3 3
4/* 4/*
5 * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. 5 * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
6 * Copyright (c) 1994, 1995 Jochen Pohl 6 * Copyright (c) 1994, 1995 Jochen Pohl
7 * All Rights Reserved. 7 * All Rights Reserved.
8 * 8 *
9 * Redistribution and use in source and binary forms, with or without 9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions 10 * modification, are permitted provided that the following conditions
11 * are met: 11 * are met:
12 * 1. Redistributions of source code must retain the above copyright 12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer. 13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright 14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the 15 * notice, this list of conditions and the following disclaimer in the
@@ -25,27 +25,27 @@ @@ -25,27 +25,27 @@
25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 25 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 27 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 */ 34 */
35 35
36#include <sys/cdefs.h> 36#include <sys/cdefs.h>
37#if defined(__RCSID) && !defined(lint) 37#if defined(__RCSID) && !defined(lint)
38__RCSID("$NetBSD: cgram.y,v 1.327 2021/07/15 18:18:15 rillig Exp $"); 38__RCSID("$NetBSD: cgram.y,v 1.328 2021/07/15 20:05:49 rillig Exp $");
39#endif 39#endif
40 40
41#include <limits.h> 41#include <limits.h>
42#include <stdlib.h> 42#include <stdlib.h>
43#include <string.h> 43#include <string.h>
44 44
45#include "lint1.h" 45#include "lint1.h"
46 46
47extern char *yytext; 47extern char *yytext;
48 48
49/* 49/*
50 * Contains the level of current declaration, used for symbol table entries. 50 * Contains the level of current declaration, used for symbol table entries.
51 * 0 is the top-level, > 0 is inside a function body. 51 * 0 is the top-level, > 0 is inside a function body.
@@ -923,84 +923,75 @@ struct_or_union: /* C99 6.7.2.1 */ @@ -923,84 +923,75 @@ struct_or_union: /* C99 6.7.2.1 */
923braced_struct_declaration_list: /* see C99 6.7.2.1 */ 923braced_struct_declaration_list: /* see C99 6.7.2.1 */
924 struct_declaration_lbrace struct_declaration_list_with_rbrace { 924 struct_declaration_lbrace struct_declaration_list_with_rbrace {
925 $$ = $2; 925 $$ = $2;
926 } 926 }
927 ; 927 ;
928 928
929struct_declaration_lbrace: /* see C99 6.7.2.1 */ 929struct_declaration_lbrace: /* see C99 6.7.2.1 */
930 T_LBRACE { 930 T_LBRACE {
931 symtyp = FVFT; 931 symtyp = FVFT;
932 } 932 }
933 ; 933 ;
934 934
935struct_declaration_list_with_rbrace: /* see C99 6.7.2.1 */ 935struct_declaration_list_with_rbrace: /* see C99 6.7.2.1 */
936 struct_declaration_list T_SEMI T_RBRACE 936 struct_declaration_list T_RBRACE
937 | struct_declaration_list T_RBRACE { 
938 if (sflag) { 
939 /* syntax req. ';' after last struct/union member */ 
940 error(66); 
941 } else { 
942 /* syntax req. ';' after last struct/union member */ 
943 warning(66); 
944 } 
945 $$ = $1; 
946 } 
947 | T_RBRACE { 937 | T_RBRACE {
 938 /* XXX: This is not allowed by any C standard. */
948 $$ = NULL; 939 $$ = NULL;
949 } 940 }
950 ; 941 ;
951 942
952struct_declaration_list: /* C99 6.7.2.1 */ 943struct_declaration_list: /* C99 6.7.2.1 */
953 struct_declaration 944 struct_declaration
954 | struct_declaration_list T_SEMI struct_declaration { 945 | struct_declaration_list struct_declaration {
955 $$ = lnklst($1, $3); 946 $$ = lnklst($1, $2);
956 } 947 }
957 ; 948 ;
958 949
959struct_declaration: /* C99 6.7.2.1 */ 950struct_declaration: /* C99 6.7.2.1 */
960 begin_type_noclass_declmods end_type { 951 begin_type_noclass_declmods end_type {
961 /* too late, i know, but getsym() compensates it */ 952 /* too late, i know, but getsym() compensates it */
962 symtyp = FMEMBER; 953 symtyp = FMEMBER;
963 } notype_struct_declarators type_attribute_opt { 954 } notype_struct_declarators type_attribute_opt T_SEMI {
964 symtyp = FVFT; 955 symtyp = FVFT;
965 $$ = $4; 956 $$ = $4;
966 } 957 }
967 | begin_type_noclass_declspecs end_type { 958 | begin_type_noclass_declspecs end_type {
968 symtyp = FMEMBER; 959 symtyp = FMEMBER;
969 } type_struct_declarators type_attribute_opt { 960 } type_struct_declarators type_attribute_opt T_SEMI {
970 symtyp = FVFT; 961 symtyp = FVFT;
971 $$ = $4; 962 $$ = $4;
972 } 963 }
973 | begin_type_noclass_declmods end_type type_attribute_opt { 964 | begin_type_noclass_declmods end_type type_attribute_opt T_SEMI {
974 /* syntax error '%s' */ 965 /* syntax error '%s' */
975 error(249, "member without type"); 966 error(249, "member without type");
976 $$ = NULL; 967 $$ = NULL;
977 } 968 }
978 | begin_type_noclass_declspecs end_type type_attribute_opt { 969 | begin_type_noclass_declspecs end_type type_attribute_opt T_SEMI {
979 symtyp = FVFT; 970 symtyp = FVFT;
980 if (!Sflag) 971 if (!Sflag)
981 /* anonymous struct/union members is a C9X feature */ 972 /* anonymous struct/union members is a C9X feature */
982 warning(49); 973 warning(49);
983 if (is_struct_or_union(dcs->d_type->t_tspec)) { 974 if (is_struct_or_union(dcs->d_type->t_tspec)) {
984 $$ = dcs->d_type->t_str->sou_first_member; 975 $$ = dcs->d_type->t_str->sou_first_member;
985 /* add all the members of the anonymous struct/union */ 976 /* add all the members of the anonymous struct/union */
986 anonymize($$); 977 anonymize($$);
987 } else { 978 } else {
988 /* syntax error '%s' */ 979 /* syntax error '%s' */
989 error(249, "unnamed member"); 980 error(249, "unnamed member");
990 $$ = NULL; 981 $$ = NULL;
991 } 982 }
992 } 983 }
993 | error { 984 | error T_SEMI {
994 symtyp = FVFT; 985 symtyp = FVFT;
995 $$ = NULL; 986 $$ = NULL;
996 } 987 }
997 ; 988 ;
998 989
999notype_struct_declarators: 990notype_struct_declarators:
1000 notype_struct_declarator { 991 notype_struct_declarator {
1001 $$ = declarator_1_struct_union($1); 992 $$ = declarator_1_struct_union($1);
1002 } 993 }
1003 | notype_struct_declarators { 994 | notype_struct_declarators {
1004 symtyp = FMEMBER; 995 symtyp = FMEMBER;
1005 } T_COMMA type_struct_declarator { 996 } T_COMMA type_struct_declarator {
1006 $$ = lnklst($1, declarator_1_struct_union($4)); 997 $$ = lnklst($1, declarator_1_struct_union($4));

cvs diff -r1.129 -r1.130 src/usr.bin/xlint/lint1/err.c (expand / switch to unified diff)

--- src/usr.bin/xlint/lint1/err.c 2021/07/13 22:01:34 1.129
+++ src/usr.bin/xlint/lint1/err.c 2021/07/15 20:05:49 1.130
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1/* $NetBSD: err.c,v 1.129 2021/07/13 22:01:34 rillig Exp $ */ 1/* $NetBSD: err.c,v 1.130 2021/07/15 20:05:49 rillig Exp $ */
2 2
3/* 3/*
4 * Copyright (c) 1994, 1995 Jochen Pohl 4 * Copyright (c) 1994, 1995 Jochen Pohl
5 * All Rights Reserved. 5 * All Rights Reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
@@ -27,27 +27,27 @@ @@ -27,27 +27,27 @@
27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */ 32 */
33 33
34#if HAVE_NBTOOL_CONFIG_H 34#if HAVE_NBTOOL_CONFIG_H
35#include "nbtool_config.h" 35#include "nbtool_config.h"
36#endif 36#endif
37 37
38#include <sys/cdefs.h> 38#include <sys/cdefs.h>
39#if defined(__RCSID) && !defined(lint) 39#if defined(__RCSID) && !defined(lint)
40__RCSID("$NetBSD: err.c,v 1.129 2021/07/13 22:01:34 rillig Exp $"); 40__RCSID("$NetBSD: err.c,v 1.130 2021/07/15 20:05:49 rillig Exp $");
41#endif 41#endif
42 42
43#include <sys/types.h> 43#include <sys/types.h>
44#include <stdarg.h> 44#include <stdarg.h>
45#include <stdlib.h> 45#include <stdlib.h>
46 46
47#include "lint1.h" 47#include "lint1.h"
48 48
49/* number of errors found */ 49/* number of errors found */
50int nerr; 50int nerr;
51 51
52/* number of syntax errors */ 52/* number of syntax errors */
53int sytxerr; 53int sytxerr;
@@ -110,27 +110,27 @@ const char *const msgs[] = { @@ -110,27 +110,27 @@ const char *const msgs[] = {
110 "declared argument %s is missing", /* 53 */ 110 "declared argument %s is missing", /* 53 */
111 "trailing ',' prohibited in enum declaration", /* 54 */ 111 "trailing ',' prohibited in enum declaration", /* 54 */
112 "integral constant expression expected", /* 55 */ 112 "integral constant expression expected", /* 55 */
113 "integral constant too large", /* 56 */ 113 "integral constant too large", /* 56 */
114 "enumeration constant hides parameter: %s", /* 57 */ 114 "enumeration constant hides parameter: %s", /* 57 */
115 "type does not match prototype: %s", /* 58 */ 115 "type does not match prototype: %s", /* 58 */
116 "formal parameter lacks name: param #%d", /* 59 */ 116 "formal parameter lacks name: param #%d", /* 59 */
117 "void must be sole parameter", /* 60 */ 117 "void must be sole parameter", /* 60 */
118 "void parameter cannot have name: %s", /* 61 */ 118 "void parameter cannot have name: %s", /* 61 */
119 "function prototype parameters must have types", /* 62 */ 119 "function prototype parameters must have types", /* 62 */
120 "prototype does not match old-style definition", /* 63 */ 120 "prototype does not match old-style definition", /* 63 */
121 "()-less function definition", /* 64 */ 121 "()-less function definition", /* 64 */
122 "%s has no named members", /* 65 */ 122 "%s has no named members", /* 65 */
123 "syntax requires ';' after last struct/union member", /* 66 */ 123 "", /* 66 */
124 "cannot return incomplete type", /* 67 */ 124 "cannot return incomplete type", /* 67 */
125 "typedef already qualified with '%s'", /* 68 */ 125 "typedef already qualified with '%s'", /* 68 */
126 "inappropriate qualifiers with 'void'", /* 69 */ 126 "inappropriate qualifiers with 'void'", /* 69 */
127 "%soperand of '%s' is unsigned in ANSI C", /* 70 */ 127 "%soperand of '%s' is unsigned in ANSI C", /* 70 */
128 "too many characters in character constant", /* 71 */ 128 "too many characters in character constant", /* 71 */
129 "typedef declares no type name", /* 72 */ 129 "typedef declares no type name", /* 72 */
130 "empty character constant", /* 73 */ 130 "empty character constant", /* 73 */
131 "no hex digits follow \\x", /* 74 */ 131 "no hex digits follow \\x", /* 74 */
132 "overflow in hex escape", /* 75 */ 132 "overflow in hex escape", /* 75 */
133 "character escape does not fit in character", /* 76 */ 133 "character escape does not fit in character", /* 76 */
134 "bad octal digit %c", /* 77 */ 134 "bad octal digit %c", /* 77 */
135 "nonportable character escape", /* 78 */ 135 "nonportable character escape", /* 78 */
136 "dubious escape \\%c", /* 79 */ 136 "dubious escape \\%c", /* 79 */