Module Name:    src
Committed By:   rillig
Date:           Thu Aug  3 18:48:42 UTC 2023

Modified Files:
        src/distrib/sets/lists/tests: mi
        src/tests/usr.bin/xlint/lint1: c11.c t_usage.sh
        src/usr.bin/xlint/lint1: cgram.y err.c
Added Files:
        src/tests/usr.bin/xlint/lint1: msg_354.c msg_355.c

Log Message:
lint: make '_Static_assert' only available in C11 or C23 mode


To generate a diff of this commit:
cvs rdiff -u -r1.1283 -r1.1284 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/c11.c
cvs rdiff -u -r0 -r1.1 src/tests/usr.bin/xlint/lint1/msg_354.c \
    src/tests/usr.bin/xlint/lint1/msg_355.c
cvs rdiff -u -r1.10 -r1.11 src/tests/usr.bin/xlint/lint1/t_usage.sh
cvs rdiff -u -r1.469 -r1.470 src/usr.bin/xlint/lint1/cgram.y
cvs rdiff -u -r1.215 -r1.216 src/usr.bin/xlint/lint1/err.c

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.1283 src/distrib/sets/lists/tests/mi:1.1284
--- src/distrib/sets/lists/tests/mi:1.1283	Thu Aug  3 13:13:05 2023
+++ src/distrib/sets/lists/tests/mi	Thu Aug  3 18:48:42 2023
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.1283 2023/08/03 13:13:05 rin Exp $
+# $NetBSD: mi,v 1.1284 2023/08/03 18:48:42 rillig Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -7444,6 +7444,8 @@
 ./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/msg_354.c			tests-usr.bin-tests	compattestfile,atf
+./usr/tests/usr.bin/xlint/lint1/msg_355.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/c11.c
diff -u src/tests/usr.bin/xlint/lint1/c11.c:1.4 src/tests/usr.bin/xlint/lint1/c11.c:1.5
--- src/tests/usr.bin/xlint/lint1/c11.c:1.4	Fri Jul 28 22:05:44 2023
+++ src/tests/usr.bin/xlint/lint1/c11.c	Thu Aug  3 18:48:42 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: c11.c,v 1.4 2023/07/28 22:05:44 rillig Exp $	*/
+/*	$NetBSD: c11.c,v 1.5 2023/08/03 18:48:42 rillig Exp $	*/
 # 3 "c11.c"
 
 /*
@@ -43,9 +43,10 @@ three_times(void)
 }
 
 
-_Static_assert(1 > 0, "string");
-/* XXX: requires C23 or later */
-_Static_assert(1 > 0);
+struct static_assert_tag {
+	_Static_assert(1 > 0, "string");
+	int member;
+};
 
 
 // C11 6.7.6.1p3

Index: src/tests/usr.bin/xlint/lint1/t_usage.sh
diff -u src/tests/usr.bin/xlint/lint1/t_usage.sh:1.10 src/tests/usr.bin/xlint/lint1/t_usage.sh:1.11
--- src/tests/usr.bin/xlint/lint1/t_usage.sh:1.10	Sun Jul  2 23:40:23 2023
+++ src/tests/usr.bin/xlint/lint1/t_usage.sh	Thu Aug  3 18:48:42 2023
@@ -1,4 +1,4 @@
-# $NetBSD: t_usage.sh,v 1.10 2023/07/02 23:40:23 rillig Exp $
+# $NetBSD: t_usage.sh,v 1.11 2023/08/03 18:48:42 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 353 code.c /dev/null
+	    "$lint1" -X 355 code.c /dev/null
 
 	# Larger than the largest known message.
 	atf_check \
 	    -s 'exit:1' \
-	    -e "inline:lint1: invalid message ID '354'\n" \
-	    "$lint1" -X 354 code.c /dev/null
+	    -e "inline:lint1: invalid message ID '356'\n" \
+	    "$lint1" -X 356 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.469 src/usr.bin/xlint/lint1/cgram.y:1.470
--- src/usr.bin/xlint/lint1/cgram.y:1.469	Wed Aug  2 21:11:35 2023
+++ src/usr.bin/xlint/lint1/cgram.y	Thu Aug  3 18:48:42 2023
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.469 2023/08/02 21:11:35 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.470 2023/08/03 18:48:42 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.469 2023/08/02 21:11:35 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.470 2023/08/03 18:48:42 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -1695,9 +1695,15 @@ designator:			/* C99 6.7.8 "Initializati
 ;
 
 static_assert_declaration:
-	T_STATIC_ASSERT T_LPAREN
-	    constant_expression T_COMMA T_STRING T_RPAREN T_SEMI /* C11 */
-|	T_STATIC_ASSERT T_LPAREN constant_expression T_RPAREN T_SEMI /* C23 */
+	T_STATIC_ASSERT T_LPAREN constant_expression T_COMMA T_STRING
+	    T_RPAREN T_SEMI {
+		/* '_Static_assert' requires C11 or later */
+		c11ism(354);
+	}
+|	T_STATIC_ASSERT T_LPAREN constant_expression T_RPAREN T_SEMI {
+		/* '_Static_assert' without message requires C23 or later */
+		c23ism(355);
+	}
 ;
 
 range:

Index: src/usr.bin/xlint/lint1/err.c
diff -u src/usr.bin/xlint/lint1/err.c:1.215 src/usr.bin/xlint/lint1/err.c:1.216
--- src/usr.bin/xlint/lint1/err.c:1.215	Wed Aug  2 18:51:25 2023
+++ src/usr.bin/xlint/lint1/err.c	Thu Aug  3 18:48:42 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: err.c,v 1.215 2023/08/02 18:51:25 rillig Exp $	*/
+/*	$NetBSD: err.c,v 1.216 2023/08/03 18:48:42 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.215 2023/08/02 18:51:25 rillig Exp $");
+__RCSID("$NetBSD: err.c,v 1.216 2023/08/03 18:48:42 rillig Exp $");
 #endif
 
 #include <limits.h>
@@ -409,6 +409,8 @@ static const char *const msgs[] = {
 	"missing%s header declaration for '%s'",		      /* 351 */
 	"nested 'extern' declaration of '%s'",			      /* 352 */
 	"empty initializer braces require C23 or later",	      /* 353 */
+	"'_Static_assert' requires C11 or later",		      /* 354 */
+	"'_Static_assert' without message requires C23 or later",     /* 355 */
 };
 
 static bool	is_suppressed[sizeof(msgs) / sizeof(msgs[0])];

Added files:

Index: src/tests/usr.bin/xlint/lint1/msg_354.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/msg_354.c:1.1
--- /dev/null	Thu Aug  3 18:48:42 2023
+++ src/tests/usr.bin/xlint/lint1/msg_354.c	Thu Aug  3 18:48:42 2023
@@ -0,0 +1,14 @@
+/*	$NetBSD: msg_354.c,v 1.1 2023/08/03 18:48:42 rillig Exp $	*/
+# 3 "msg_354.c"
+
+// Test for message 354: '_Static_assert' requires C11 or later [354]
+//
+// See also:
+//	c23.c
+
+/* lint1-flags: -Sw -X 351 */
+
+/* expect+1: error: '_Static_assert' requires C11 or later [354] */
+_Static_assert(1 > 0, "message");
+/* expect+1: error: '_Static_assert' without message requires C23 or later [355] */
+_Static_assert(1 > 0);
Index: src/tests/usr.bin/xlint/lint1/msg_355.c
diff -u /dev/null src/tests/usr.bin/xlint/lint1/msg_355.c:1.1
--- /dev/null	Thu Aug  3 18:48:42 2023
+++ src/tests/usr.bin/xlint/lint1/msg_355.c	Thu Aug  3 18:48:42 2023
@@ -0,0 +1,13 @@
+/*	$NetBSD: msg_355.c,v 1.1 2023/08/03 18:48:42 rillig Exp $	*/
+# 3 "msg_355.c"
+
+// Test for message 355: '_Static_assert' without message requires C23 or later [355]
+//
+// See also:
+//	c23.c
+
+/* lint1-extra-flags: -Ac11 -X 351 */
+
+_Static_assert(1 > 0, "message");
+/* expect+1: error: '_Static_assert' without message requires C23 or later [355] */
+_Static_assert(1 > 0);

Reply via email to