Module Name:    src
Committed By:   rillig
Date:           Sun Jul  2 23:40:23 UTC 2023

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/usr.bin/xlint/lint1: t_usage.sh
        src/usr.bin/xlint/lint1: cgram.y check-msgs.lua err.c externs1.h
            lint1.h main1.c
        src/usr.bin/xlint/xlint: lint.1

Log Message:
lint: add initial support for C23

Required by xsrc/external/mit/MesaLib.old, brw_eu_validate.c, which
initializes a struct using empty braces: 'return (struct string){};'.


To generate a diff of this commit:
cvs rdiff -u -r1.1271 -r1.1272 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.9 -r1.10 src/tests/usr.bin/xlint/lint1/t_usage.sh
cvs rdiff -u -r1.445 -r1.446 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.17 -r1.18 src/usr.bin/xlint/lint1/check-msgs.lua
cvs rdiff -u -r1.203 -r1.204 src/usr.bin/xlint/lint1/err.c
cvs rdiff -u -r1.187 -r1.188 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.178 -r1.179 src/usr.bin/xlint/lint1/lint1.h
cvs rdiff -u -r1.66 -r1.67 src/usr.bin/xlint/lint1/main1.c
cvs rdiff -u -r1.59 -r1.60 src/usr.bin/xlint/xlint/lint.1

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.1271 src/distrib/sets/lists/tests/mi:1.1272
--- src/distrib/sets/lists/tests/mi:1.1271	Fri Jun 16 23:51:31 2023
+++ src/distrib/sets/lists/tests/mi	Sun Jul  2 23:40:23 2023
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1271 2023/06/16 23:51:31 rillig Exp $
+# $NetBSD: mi,v 1.1272 2023/07/02 23:40:23 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -6509,6 +6509,7 @@
 ./usr/tests/usr.bin/xlint/lint1/c11_atomic.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/c11_generic_expression.c	tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/c11_generic_expression.exp	tests-obsolete		obsolete,atf
+./usr/tests/usr.bin/xlint/lint1/c23.c				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/c90.c				tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/c90.exp				tests-obsolete		obsolete,atf
 ./usr/tests/usr.bin/xlint/lint1/c99_atomic.c			tests-usr.bin-tests	compattestfile,atf
@@ -7432,6 +7433,7 @@
 ./usr/tests/usr.bin/xlint/lint1/msg_350.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_351.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/msg_352.c			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/msg_353.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/op_colon.c			tests-usr.bin-tests	compattestfile,atf
 ./usr/tests/usr.bin/xlint/lint1/op_colon.exp			tests-obsolete		obsolete,atf
 ./usr/tests/usr.bin/xlint/lint1/op_shl_lp64.c			tests-usr.bin-tests	compattestfile,atf

Index: src/tests/usr.bin/xlint/lint1/t_usage.sh
diff -u src/tests/usr.bin/xlint/lint1/t_usage.sh:1.9 src/tests/usr.bin/xlint/lint1/t_usage.sh:1.10
--- src/tests/usr.bin/xlint/lint1/t_usage.sh:1.9	Fri Jun 30 08:45:22 2023
+++ src/tests/usr.bin/xlint/lint1/t_usage.sh	Sun Jul  2 23:40:23 2023
@@ -1,4 +1,4 @@
-# $NetBSD: t_usage.sh,v 1.9 2023/06/30 08:45:22 rillig Exp $
+# $NetBSD: t_usage.sh,v 1.10 2023/07/02 23:40:23 rillig Exp $
 #
 # Copyright (c) 2023 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -39,13 +39,13 @@ suppress_messages_body()
 
 	# The largest known message.
 	atf_check \
-	    "$lint1" -X 352 code.c /dev/null
+	    "$lint1" -X 353 code.c /dev/null
 
 	# Larger than the largest known message.
 	atf_check \
 	    -s 'exit:1' \
-	    -e "inline:lint1: invalid message ID '353'\n" \
-	    "$lint1" -X 353 code.c /dev/null
+	    -e "inline:lint1: invalid message ID '354'\n" \
+	    "$lint1" -X 354 code.c /dev/null
 
 	# Whitespace is not allowed before a message ID.
 	atf_check \

Index: src/usr.bin/xlint/lint1/cgram.y
diff -u src/usr.bin/xlint/lint1/cgram.y:1.445 src/usr.bin/xlint/lint1/cgram.y:1.446
--- src/usr.bin/xlint/lint1/cgram.y:1.445	Sun Jul  2 22:56:13 2023
+++ src/usr.bin/xlint/lint1/cgram.y	Sun Jul  2 23:40:23 2023
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.445 2023/07/02 22:56:13 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.446 2023/07/02 23:40:23 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -35,7 +35,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: cgram.y,v 1.445 2023/07/02 22:56:13 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.446 2023/07/02 23:40:23 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -459,7 +459,7 @@ postfix_expression:
 		sym_t *tmp = mktempsym($2);
 		begin_initialization(tmp);
 		cgram_declare(tmp, true, NULL);
-	  } init_lbrace initializer_list comma_opt init_rbrace {
+	  } braced_initializer {
 		if (!allow_c99)
 			 /* compound literals are a C99/GCC extension */
 			 gnuism(319);
@@ -1519,6 +1519,16 @@ parameter_declaration:
 	  }
 	;
 
+braced_initializer:
+	/* K&R ---, C90 ---, C99 ---, C11 ---, C23 6.7.10 */
+	  init_lbrace init_rbrace {
+		/* empty initializer braces require C23 or later */
+		c23ism(353);
+	}
+	/* K&R ---, C90 ---, C99 6.7.8, C11 6.7.9, C23 6.7.10 */
+	| init_lbrace initializer_list comma_opt init_rbrace
+	;
+
 initializer:			/* C99 6.7.8 "Initialization" */
 	  assignment_expression {
 		init_expr($1);

Index: src/usr.bin/xlint/lint1/check-msgs.lua
diff -u src/usr.bin/xlint/lint1/check-msgs.lua:1.17 src/usr.bin/xlint/lint1/check-msgs.lua:1.18
--- src/usr.bin/xlint/lint1/check-msgs.lua:1.17	Tue Jul  5 22:50:41 2022
+++ src/usr.bin/xlint/lint1/check-msgs.lua	Sun Jul  2 23:40:23 2023
@@ -1,5 +1,5 @@
 #! /usr/bin/lua
--- $NetBSD: check-msgs.lua,v 1.17 2022/07/05 22:50:41 rillig Exp $
+-- $NetBSD: check-msgs.lua,v 1.18 2023/07/02 23:40:23 rillig Exp $
 
 --[[
 
@@ -69,6 +69,7 @@ local message_prefix = {
   query_message = "Q",
   c99ism = "",
   c11ism = "",
+  c23ism = "",
   gnuism = "",
 }
 

Index: src/usr.bin/xlint/lint1/err.c
diff -u src/usr.bin/xlint/lint1/err.c:1.203 src/usr.bin/xlint/lint1/err.c:1.204
--- src/usr.bin/xlint/lint1/err.c:1.203	Fri Jun 30 08:45:22 2023
+++ src/usr.bin/xlint/lint1/err.c	Sun Jul  2 23:40:23 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: err.c,v 1.203 2023/06/30 08:45:22 rillig Exp $	*/
+/*	$NetBSD: err.c,v 1.204 2023/07/02 23:40:23 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: err.c,v 1.203 2023/06/30 08:45:22 rillig Exp $");
+__RCSID("$NetBSD: err.c,v 1.204 2023/07/02 23:40:23 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -408,6 +408,7 @@ static const char *const msgs[] = {
 	"'_Atomic' requires C11 or later",			      /* 350 */
 	"missing%s header declaration for '%s'",		      /* 351 */
 	"nested 'extern' declaration of '%s'",			      /* 352 */
+	"empty initializer braces require C23 or later",	      /* 353 */
 };
 
 static bool	is_suppressed[sizeof(msgs) / sizeof(msgs[0])];
@@ -677,6 +678,18 @@ void
 	va_end(ap);
 }
 
+void
+(c23ism)(int msgid, ...)
+{
+	va_list ap;
+
+	if (allow_c23)
+		return;
+	va_start(ap, msgid);
+	verror_at(msgid, &curr_pos, ap);
+	va_end(ap);
+}
+
 bool
 (gnuism)(int msgid, ...)
 {

Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.187 src/usr.bin/xlint/lint1/externs1.h:1.188
--- src/usr.bin/xlint/lint1/externs1.h:1.187	Sun Jul  2 18:14:44 2023
+++ src/usr.bin/xlint/lint1/externs1.h	Sun Jul  2 23:40:23 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs1.h,v 1.187 2023/07/02 18:14:44 rillig Exp $	*/
+/*	$NetBSD: externs1.h,v 1.188 2023/07/02 23:40:23 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -56,6 +56,7 @@ extern	bool	allow_trad;
 extern	bool	allow_c90;
 extern	bool	allow_c99;
 extern	bool	allow_c11;
+extern	bool	allow_c23;
 extern	bool	allow_gcc;
 
 extern sig_atomic_t fpe;
@@ -168,6 +169,7 @@ void	warning(int, ...);
 bool	gnuism(int, ...);
 void	c99ism(int, ...);
 void	c11ism(int, ...);
+void	c23ism(int, ...);
 void	assert_failed(const char *, int, const char *, const char *)
 		__attribute__((__noreturn__));
 void	update_location(const char *, int, bool, bool);

Index: src/usr.bin/xlint/lint1/lint1.h
diff -u src/usr.bin/xlint/lint1/lint1.h:1.178 src/usr.bin/xlint/lint1/lint1.h:1.179
--- src/usr.bin/xlint/lint1/lint1.h:1.178	Sun Jul  2 18:28:15 2023
+++ src/usr.bin/xlint/lint1/lint1.h	Sun Jul  2 23:40:23 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.178 2023/07/02 18:28:15 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.179 2023/07/02 23:40:23 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -492,6 +492,7 @@ check_printf(const char *fmt, ...)
 #  define gnuism(msgid, args...) wrap_check_printf(gnuism, !allow_gcc || (!allow_trad && !allow_c99), msgid, ##args)
 #  define c99ism(msgid, args...) wrap_check_printf(c99ism, !allow_c99 && (!allow_gcc || !allow_trad), msgid, ##args)
 #  define c11ism(msgid, args...) wrap_check_printf(c11ism, !allow_c11 && !allow_gcc, msgid, ##args)
+#  define c23ism(msgid, args...) wrap_check_printf(c23ism, !allow_c23, msgid, ##args)
 #endif
 
 #ifdef DEBUG

Index: src/usr.bin/xlint/lint1/main1.c
diff -u src/usr.bin/xlint/lint1/main1.c:1.66 src/usr.bin/xlint/lint1/main1.c:1.67
--- src/usr.bin/xlint/lint1/main1.c:1.66	Fri Jan 13 19:41:50 2023
+++ src/usr.bin/xlint/lint1/main1.c	Sun Jul  2 23:40:23 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: main1.c,v 1.66 2023/01/13 19:41:50 rillig Exp $	*/
+/*	$NetBSD: main1.c,v 1.67 2023/07/02 23:40:23 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: main1.c,v 1.66 2023/01/13 19:41:50 rillig Exp $");
+__RCSID("$NetBSD: main1.c,v 1.67 2023/07/02 23:40:23 rillig Exp $");
 #endif
 
 #include <sys/types.h>
@@ -116,6 +116,7 @@ bool	allow_trad = true;
 bool	allow_c90 = true;
 bool	allow_c99;
 bool	allow_c11;
+bool	allow_c23;
 bool	allow_gcc;
 
 sig_atomic_t fpe;
@@ -195,12 +196,14 @@ main(int argc, char *argv[])
 			allow_c90 = true;
 			allow_c99 = false;
 			allow_c11 = false;
+			allow_c23 = false;
 			break;
 		case 'S':
 			allow_trad = false;
 			allow_c90 = true;
 			allow_c99 = true;
 			allow_c11 = false;
+			allow_c23 = false;
 			break;
 		case 'T':	Tflag = true;	break;
 		case 't':
@@ -208,6 +211,7 @@ main(int argc, char *argv[])
 			allow_c90 = false;
 			allow_c99 = false;
 			allow_c11 = false;
+			allow_c23 = false;
 			break;
 		case 'u':	uflag = false;	break;
 		case 'w':	wflag = true;	break;
@@ -216,11 +220,18 @@ main(int argc, char *argv[])
 		case 'z':	zflag = false;	break;
 
 		case 'A':
-			if (strcmp(optarg, "c11") == 0) {
+			if (strcmp(optarg, "c23") == 0) {
 				allow_trad = false;
 				allow_c90 = true;
 				allow_c99 = true;
 				allow_c11 = true;
+				allow_c23 = true;
+			} else if (strcmp(optarg, "c11") == 0) {
+				allow_trad = false;
+				allow_c90 = true;
+				allow_c99 = true;
+				allow_c11 = true;
+				allow_c23 = true;
 			} else
 				usage();
 			break;

Index: src/usr.bin/xlint/xlint/lint.1
diff -u src/usr.bin/xlint/xlint/lint.1:1.59 src/usr.bin/xlint/xlint/lint.1:1.60
--- src/usr.bin/xlint/xlint/lint.1:1.59	Wed Jun 28 13:50:47 2023
+++ src/usr.bin/xlint/xlint/lint.1	Sun Jul  2 23:40:23 2023
@@ -1,4 +1,4 @@
-.\" $NetBSD: lint.1,v 1.59 2023/06/28 13:50:47 rillig Exp $
+.\" $NetBSD: lint.1,v 1.60 2023/07/02 23:40:23 rillig Exp $
 .\"
 .\" Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
 .\" Copyright (c) 1994, 1995 Jochen Pohl
@@ -30,7 +30,7 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd June 28, 2023
+.Dd July 3, 2023
 .Dt LINT 1
 .Os
 .Sh NAME
@@ -40,7 +40,7 @@
 .Nm
 .Op Fl abceFgHhPprTVvwxz
 .Op Fl i | Fl nu
-.Op Fl S | Fl s | Fl t | Fl Ac11
+.Op Fl S | Fl s | Fl t | Fl Ac11 | Fl Ac23
 .Op Fl B Ar directory
 .Op Fl D Ar name Ns Op =def
 .Op Fl d Ar directory
@@ -57,7 +57,7 @@
 .Ar
 .Nm lint
 .Op Fl abceFgHhprTVvwz
-.Op Fl S | Fl s | Fl t | Fl Ac11
+.Op Fl S | Fl s | Fl t | Fl Ac11 | Fl Ac23
 .Fl C Ar library
 .Op Fl B Ar directory
 .Op Fl D Ar name Ns Op =def
@@ -182,6 +182,8 @@ printed followed by a question mark.
 .Bl -tag -width XXoutputfile
 .It Fl Ac11
 Allow features from C11, C99 and C90.
+.It Fl Ac23
+Allow features from C23, C17, C11, C99 and C90.
 .It Fl a
 Report assignments of
 .Sy long
@@ -655,7 +657,7 @@ and strict bool mode.
 .An Jochen Pohl
 (1995)
 .An Roland Illig
-(2021)
+(2021 to 2023)
 .\" .Sh CAVEATS
 .Sh BUGS
 The routines

Reply via email to