Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/usr.bin/xlint/lint1 lint: enable heuristics in test fo...
details: https://anonhg.NetBSD.org/src/rev/038406ea98ea
branches: trunk
changeset: 952891:038406ea98ea
user: rillig <rillig%NetBSD.org@localhost>
date: Sat Feb 20 18:49:26 2021 +0000
description:
lint: enable heuristics in test for strict bool mode
This is a preparation for allowing 'do { ... } while (false)', in
addition to the commonly used 'do { ... } while (0)', without declaring
the controlling expression /*CONSTCOND*/.
diffstat:
tests/usr.bin/xlint/lint1/d_c99_bool_strict.c | 30 ++++++++++++------------
tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp | 15 ++++++++++++
2 files changed, 30 insertions(+), 15 deletions(-)
diffs (167 lines):
diff -r 354dd36c3d16 -r 038406ea98ea tests/usr.bin/xlint/lint1/d_c99_bool_strict.c
--- a/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c Sat Feb 20 18:18:53 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/d_c99_bool_strict.c Sat Feb 20 18:49:26 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: d_c99_bool_strict.c,v 1.18 2021/02/20 18:02:58 rillig Exp $ */
+/* $NetBSD: d_c99_bool_strict.c,v 1.19 2021/02/20 18:49:26 rillig Exp $ */
# 3 "d_c99_bool_strict.c"
/*
@@ -97,7 +97,7 @@
* __lint_false and true to __lint_true, two predefined constant expressions.
*/
-/* lint1-extra-flags: -T */
+/* lint1-extra-flags: -hT */
/*
* strict-bool-typedef
@@ -130,10 +130,10 @@
enum strict_bool_constant_expressions {
/* Ok: __lint_false is a boolean constant expression. */
- FALSE = __lint_false ? 100 : 101,
+ FALSE = __lint_false ? 100 : 101, /* expect: 161 */
/* Ok: __lint_true is a boolean constant expression. */
- TRUE = __lint_true ? 100 : 101,
+ TRUE = __lint_true ? 100 : 101, /* expect: 161 */
/* Not ok: an integer is not a boolean constant expression. */
INT0 = 0 ? 100 : 101, /* expect: 331 */
@@ -159,13 +159,13 @@
UNARY_PLUS = (+0) ? 100 : 101, /* expect: 331 */
/* The main operator '>' has return type bool. */
- Q1 = (13 > 12) ? 100 : 101,
+ Q1 = (13 > 12) ? 100 : 101, /* expect: 161 */
/*
* The parenthesized expression has type int and thus cannot be
* used as the controlling expression in the '?:' operator.
*/
- Q2 = (13 > 12 ? 1 : 7) ? 100 : 101, /* expect: 331 */
+ Q2 = (13 > 12 ? 1 : 7) ? 100 : 101, /* expect: 161, 331 */
BINAND_BOOL = __lint_false & __lint_true, /* expect: 55 */
BINAND_INT = 0 & 1,
@@ -176,10 +176,10 @@
BINOR_BOOL = __lint_false | __lint_true, /* expect: 55 */
BINOR_INT = 0 | 1,
- LOGOR_BOOL = __lint_false || __lint_true, /* expect: 55 */
+ LOGOR_BOOL = __lint_false || __lint_true, /* expect: 161, 55 */
LOGOR_INT = 0 || 1, /* expect: 331, 332 */
- LOGAND_BOOL = __lint_false && __lint_true, /* expect: 55 */
+ LOGAND_BOOL = __lint_false && __lint_true, /* expect: 161, 55 */
LOGAND_INT = 0 && 1, /* expect: 331, 332 */
};
@@ -363,10 +363,10 @@
void
strict_bool_controlling_expression(bool b, int i, double d, const void *p)
{
- if (__lint_false)
+ if (__lint_false) /* expect: 161 */
do_nothing();
- if (__lint_true)
+ if (__lint_true) /* expect: 161 */
do_nothing();
if (b)
@@ -415,8 +415,8 @@
b = !b;
b = !!!b;
- b = !__lint_false;
- b = !__lint_true;
+ b = !__lint_false; /* expect: 161, 239 */
+ b = !__lint_true; /* expect: 161, 239 */
int i = 0;
@@ -579,8 +579,8 @@
bool
strict_bool_operand_binary_comma(bool b, int i)
{
- b = (b, !b);
- i = (i, i + 1);
+ b = (b, !b); /* expect: 129 */
+ i = (i, i + 1); /* expect: 129 */
return b;
}
@@ -725,7 +725,7 @@
struct s s = { __lint_false };
- (void)((s.flag = s.flag) != __lint_false);
+ (void)((s.flag = s.flag) != __lint_false); /* expect: 129 */
}
void
diff -r 354dd36c3d16 -r 038406ea98ea tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp
--- a/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp Sat Feb 20 18:18:53 2021 +0000
+++ b/tests/usr.bin/xlint/lint1/d_c99_bool_strict.exp Sat Feb 20 18:49:26 2021 +0000
@@ -1,19 +1,25 @@
d_c99_bool_strict.c(126): argument #1 expects '_Bool', gets passed 'int' [334]
d_c99_bool_strict.c(127): argument #1 expects '_Bool', gets passed 'int' [334]
d_c99_bool_strict.c(128): argument #1 expects '_Bool', gets passed 'int' [334]
+d_c99_bool_strict.c(133): warning: constant in conditional context [161]
+d_c99_bool_strict.c(136): warning: constant in conditional context [161]
d_c99_bool_strict.c(139): left operand of '?' must be bool, not 'int' [331]
d_c99_bool_strict.c(142): left operand of '?' must be bool, not 'int' [331]
d_c99_bool_strict.c(145): left operand of '?' must be bool, not 'int' [331]
d_c99_bool_strict.c(148): left operand of '?' must be bool, not 'int' [331]
d_c99_bool_strict.c(158): left operand of '?' must be bool, not 'int' [331]
d_c99_bool_strict.c(159): left operand of '?' must be bool, not 'int' [331]
+d_c99_bool_strict.c(162): warning: constant in conditional context [161]
+d_c99_bool_strict.c(168): warning: constant in conditional context [161]
d_c99_bool_strict.c(168): left operand of '?' must be bool, not 'int' [331]
d_c99_bool_strict.c(170): integral constant expression expected [55]
d_c99_bool_strict.c(173): integral constant expression expected [55]
d_c99_bool_strict.c(176): integral constant expression expected [55]
+d_c99_bool_strict.c(179): warning: constant in conditional context [161]
d_c99_bool_strict.c(179): integral constant expression expected [55]
d_c99_bool_strict.c(180): left operand of '||' must be bool, not 'int' [331]
d_c99_bool_strict.c(180): right operand of '||' must be bool, not 'int' [332]
+d_c99_bool_strict.c(182): warning: constant in conditional context [161]
d_c99_bool_strict.c(182): integral constant expression expected [55]
d_c99_bool_strict.c(183): left operand of '&&' must be bool, not 'int' [331]
d_c99_bool_strict.c(183): right operand of '&&' must be bool, not 'int' [332]
@@ -48,12 +54,18 @@
d_c99_bool_strict.c(353): operands of '=' have incompatible types (double != _Bool) [107]
d_c99_bool_strict.c(354): operands of '=' have incompatible types (pointer != _Bool) [107]
d_c99_bool_strict.c(344): warning: argument b unused in function strict_bool_conversion_from_bool_to_scalar [231]
+d_c99_bool_strict.c(366): warning: constant in conditional context [161]
+d_c99_bool_strict.c(369): warning: constant in conditional context [161]
d_c99_bool_strict.c(375): controlling expression must be bool, not 'int' [333]
d_c99_bool_strict.c(378): controlling expression must be bool, not 'int' [333]
d_c99_bool_strict.c(381): controlling expression must be bool, not 'int' [333]
d_c99_bool_strict.c(385): controlling expression must be bool, not 'int' [333]
d_c99_bool_strict.c(391): controlling expression must be bool, not 'double' [333]
d_c99_bool_strict.c(397): controlling expression must be bool, not 'pointer' [333]
+d_c99_bool_strict.c(418): warning: constant in conditional context [161]
+d_c99_bool_strict.c(418): warning: constant argument to NOT [239]
+d_c99_bool_strict.c(419): warning: constant in conditional context [161]
+d_c99_bool_strict.c(419): warning: constant argument to NOT [239]
d_c99_bool_strict.c(423): operand of '!' must be bool, not 'int' [330]
d_c99_bool_strict.c(424): operand of '!' must be bool, not 'int' [330]
d_c99_bool_strict.c(425): operand of '!' must be bool, not 'int' [330]
@@ -128,6 +140,8 @@
d_c99_bool_strict.c(573): right operand of '>>' must not be bool [337]
d_c99_bool_strict.c(575): operands of ':' have incompatible types (_Bool != unsigned int) [107]
d_c99_bool_strict.c(576): operands of ':' have incompatible types (unsigned int != _Bool) [107]
+d_c99_bool_strict.c(582): warning: expression has null effect [129]
+d_c99_bool_strict.c(583): warning: expression has null effect [129]
d_c99_bool_strict.c(596): operands of '=' have incompatible types (char != _Bool) [107]
d_c99_bool_strict.c(597): operands of '=' have incompatible types (int != _Bool) [107]
d_c99_bool_strict.c(598): operands of '=' have incompatible types (double != _Bool) [107]
@@ -146,4 +160,5 @@
d_c99_bool_strict.c(677): operands of '=' have incompatible types (_Bool != int) [107]
d_c99_bool_strict.c(652): warning: argument flags unused in function strict_bool_bitwise_and_enum [231]
d_c99_bool_strict.c(716): operands of '==' have incompatible types (_Bool != int) [107]
+d_c99_bool_strict.c(728): warning: expression has null effect [129]
d_c99_bool_strict.c(740): right operand of '+' must not be bool [337]
Home |
Main Index |
Thread Index |
Old Index