Module Name:    src
Committed By:   rillig
Date:           Sat Dec 30 15:18:57 UTC 2023

Modified Files:
        src/tests/usr.bin/xlint/lint1: d_c99_bool_strict.c

Log Message:
tests/lint: test '&' for non-enum types in strict bool mode


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c

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_c99_bool_strict.c
diff -u src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c:1.45 src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c:1.46
--- src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c:1.45	Sun Dec 10 14:59:47 2023
+++ src/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c	Sat Dec 30 15:18:57 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: d_c99_bool_strict.c,v 1.45 2023/12/10 14:59:47 rillig Exp $	*/
+/*	$NetBSD: d_c99_bool_strict.c,v 1.46 2023/12/30 15:18:57 rillig Exp $	*/
 # 3 "d_c99_bool_strict.c"
 
 /*
@@ -880,6 +880,32 @@ query_flag_from_enum_bit_set(enum Flags 
 		println("FLAG28 is set");
 }
 
+void
+query_flag_from_int(int flags)
+{
+	/* expect+1: error: controlling expression must be bool, not 'int' [333] */
+	if (flags & FLAG0)
+		println("FLAG0 is set");
+
+	if ((flags & FLAG1) != 0)
+		println("FLAG1 is set");
+
+	if ((flags & (FLAG0 | FLAG1)) == (FLAG0 | FLAG1))
+		println("FLAG0 and FLAG1 are both set");
+
+	/* expect+2: error: left operand of '&&' must be bool, not 'int' [331] */
+	/* expect+1: error: right operand of '&&' must be bool, not 'int' [332] */
+	if (flags & FLAG0 && flags & FLAG1)
+		println("FLAG0 and FLAG1 are both set");
+
+	if ((flags & (FLAG0 | FLAG1)) != 0)
+		println("At least one of FLAG0 and FLAG1 is set");
+
+	/* expect+1: error: controlling expression must be bool, not 'int' [333] */
+	if (flags & FLAG28)
+		println("FLAG28 is set");
+}
+
 
 void
 strict_bool_operator_eq_bool_int(void)
@@ -963,10 +989,10 @@ typedef struct stdio_file {
 int ferror(FILE *);
 FILE stdio_files[3];
 FILE *stdio_stdout;
-# 967 "d_c99_bool_strict.c" 2
+# 993 "d_c99_bool_strict.c" 2
 # 1 "string.h" 1 3 4
 int strcmp(const char *, const char *);
-# 970 "d_c99_bool_strict.c" 2
+# 996 "d_c99_bool_strict.c" 2
 
 void
 controlling_expression(FILE *f, const char *a, const char *b)
@@ -1000,9 +1026,9 @@ controlling_expression(FILE *f, const ch
 	 */
 	/* expect+5: error: controlling expression must be bool, not 'int' [333] */
 	if (ferror(
-# 1004 "d_c99_bool_strict.c" 3 4
+# 1030 "d_c99_bool_strict.c" 3 4
 	    &stdio_files[1]
-# 1006 "d_c99_bool_strict.c"
+# 1032 "d_c99_bool_strict.c"
 	    ))
 		return;
 
@@ -1018,9 +1044,9 @@ controlling_expression(FILE *f, const ch
 	 */
 	/* expect+5: error: controlling expression must be bool, not 'int' [333] */
 	if (ferror(
-# 1022 "d_c99_bool_strict.c" 3 4
+# 1048 "d_c99_bool_strict.c" 3 4
 	    stdio_stdout
-# 1024 "d_c99_bool_strict.c"
+# 1050 "d_c99_bool_strict.c"
 	    ))
 		return;
 
@@ -1033,9 +1059,9 @@ controlling_expression(FILE *f, const ch
 	 */
 	/* expect+5: error: controlling expression must be bool, not 'int' [333] */
 	if (ferror(
-# 1037 "d_c99_bool_strict.c" 3 4
+# 1063 "d_c99_bool_strict.c" 3 4
 	    (stdio_stdout)
-# 1039 "d_c99_bool_strict.c"
+# 1065 "d_c99_bool_strict.c"
 	    ))
 		return;
 
@@ -1059,9 +1085,9 @@ controlling_expression(FILE *f, const ch
 	 */
 	/* expect+5: error: controlling expression must be bool, not 'int' [333] */
 	if (ferror(
-# 1063 "d_c99_bool_strict.c" 3 4
+# 1089 "d_c99_bool_strict.c" 3 4
 	    stdio_stdout /* comment */
-# 1065 "d_c99_bool_strict.c"
+# 1091 "d_c99_bool_strict.c"
 	    ))
 		return;
 }

Reply via email to