| // SPDX-License-Identifier: GPL-2.0-only | |
| /// Bool initializations should use true and false. Bool tests don't need | |
| /// comparisons. Based on contributions from Joe Perches, Rusty Russell | |
| /// and Bruce W Allan. | |
| /// | |
| // Confidence: High | |
| // Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. | |
| // Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. | |
| // URL: http://coccinelle.lip6.fr/ | |
| // Options: --include-headers | |
| virtual patch | |
| virtual context | |
| virtual org | |
| virtual report | |
| @boolok@ | |
| symbol true,false; | |
| @@ | |
| ( | |
| true | |
| | | |
| false | |
| ) | |
| @depends on patch@ | |
| bool t; | |
| @@ | |
| ( | |
| - t == true | |
| + t | |
| | | |
| - true == t | |
| + t | |
| | | |
| - t != true | |
| + !t | |
| | | |
| - true != t | |
| + !t | |
| | | |
| - t == false | |
| + !t | |
| | | |
| - false == t | |
| + !t | |
| | | |
| - t != false | |
| + t | |
| | | |
| - false != t | |
| + t | |
| ) | |
| @depends on patch disable is_zero, isnt_zero@ | |
| bool t; | |
| @@ | |
| ( | |
| - t == 1 | |
| + t | |
| | | |
| - t != 1 | |
| + !t | |
| | | |
| - t == 0 | |
| + !t | |
| | | |
| - t != 0 | |
| + t | |
| ) | |
| @depends on patch && boolok@ | |
| bool b; | |
| @@ | |
| ( | |
| b = | |
| - 0 | |
| + false | |
| | | |
| b = | |
| - 1 | |
| + true | |
| ) | |
| // --------------------------------------------------------------------- | |
| @r1 depends on !patch@ | |
| bool t; | |
| position p; | |
| @@ | |
| ( | |
| * t@p == true | |
| | | |
| * true == t@p | |
| | | |
| * t@p != true | |
| | | |
| * true != t@p | |
| | | |
| * t@p == false | |
| | | |
| * false == t@p | |
| | | |
| * t@p != false | |
| | | |
| * false != t@p | |
| ) | |
| @r2 depends on !patch disable is_zero, isnt_zero@ | |
| bool t; | |
| position p; | |
| @@ | |
| ( | |
| * t@p == 1 | |
| | | |
| * t@p != 1 | |
| | | |
| * t@p == 0 | |
| | | |
| * t@p != 0 | |
| ) | |
| @r3 depends on !patch && boolok@ | |
| bool b; | |
| position p1; | |
| @@ | |
| ( | |
| *b@p1 = 0 | |
| | | |
| *b@p1 = 1 | |
| ) | |
| @r4 depends on !patch@ | |
| bool b; | |
| position p2; | |
| identifier i; | |
| constant c != {0,1}; | |
| @@ | |
| ( | |
| b = i | |
| | | |
| *b@p2 = c | |
| ) | |
| @script:python depends on org@ | |
| p << r1.p; | |
| @@ | |
| cocci.print_main("WARNING: Comparison to bool",p) | |
| @script:python depends on org@ | |
| p << r2.p; | |
| @@ | |
| cocci.print_main("WARNING: Comparison of 0/1 to bool variable",p) | |
| @script:python depends on org@ | |
| p1 << r3.p1; | |
| @@ | |
| cocci.print_main("WARNING: Assignment of 0/1 to bool variable",p1) | |
| @script:python depends on org@ | |
| p2 << r4.p2; | |
| @@ | |
| cocci.print_main("ERROR: Assignment of non-0/1 constant to bool variable",p2) | |
| @script:python depends on report@ | |
| p << r1.p; | |
| @@ | |
| coccilib.report.print_report(p[0],"WARNING: Comparison to bool") | |
| @script:python depends on report@ | |
| p << r2.p; | |
| @@ | |
| coccilib.report.print_report(p[0],"WARNING: Comparison of 0/1 to bool variable") | |
| @script:python depends on report@ | |
| p1 << r3.p1; | |
| @@ | |
| coccilib.report.print_report(p1[0],"WARNING: Assignment of 0/1 to bool variable") | |
| @script:python depends on report@ | |
| p2 << r4.p2; | |
| @@ | |
| coccilib.report.print_report(p2[0],"ERROR: Assignment of non-0/1 constant to bool variable") |