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/0a820a9d2f8d
branches:  trunk
changeset: 959628:0a820a9d2f8d
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 b8a99e493d3a -r 0a820a9d2f8d 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 b8a99e493d3a -r 0a820a9d2f8d 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