18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/// Bool initializations should use true and false. Bool tests don't need 38c2ecf20Sopenharmony_ci/// comparisons. Based on contributions from Joe Perches, Rusty Russell 48c2ecf20Sopenharmony_ci/// and Bruce W Allan. 58c2ecf20Sopenharmony_ci/// 68c2ecf20Sopenharmony_ci// Confidence: High 78c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6. 88c2ecf20Sopenharmony_ci// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6. 98c2ecf20Sopenharmony_ci// URL: http://coccinelle.lip6.fr/ 108c2ecf20Sopenharmony_ci// Options: --include-headers 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_civirtual patch 138c2ecf20Sopenharmony_civirtual context 148c2ecf20Sopenharmony_civirtual org 158c2ecf20Sopenharmony_civirtual report 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci@boolok@ 188c2ecf20Sopenharmony_cisymbol true,false; 198c2ecf20Sopenharmony_ci@@ 208c2ecf20Sopenharmony_ci( 218c2ecf20Sopenharmony_citrue 228c2ecf20Sopenharmony_ci| 238c2ecf20Sopenharmony_cifalse 248c2ecf20Sopenharmony_ci) 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci@depends on patch@ 278c2ecf20Sopenharmony_cibool t; 288c2ecf20Sopenharmony_ci@@ 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci( 318c2ecf20Sopenharmony_ci- t == true 328c2ecf20Sopenharmony_ci+ t 338c2ecf20Sopenharmony_ci| 348c2ecf20Sopenharmony_ci- true == t 358c2ecf20Sopenharmony_ci+ t 368c2ecf20Sopenharmony_ci| 378c2ecf20Sopenharmony_ci- t != true 388c2ecf20Sopenharmony_ci+ !t 398c2ecf20Sopenharmony_ci| 408c2ecf20Sopenharmony_ci- true != t 418c2ecf20Sopenharmony_ci+ !t 428c2ecf20Sopenharmony_ci| 438c2ecf20Sopenharmony_ci- t == false 448c2ecf20Sopenharmony_ci+ !t 458c2ecf20Sopenharmony_ci| 468c2ecf20Sopenharmony_ci- false == t 478c2ecf20Sopenharmony_ci+ !t 488c2ecf20Sopenharmony_ci| 498c2ecf20Sopenharmony_ci- t != false 508c2ecf20Sopenharmony_ci+ t 518c2ecf20Sopenharmony_ci| 528c2ecf20Sopenharmony_ci- false != t 538c2ecf20Sopenharmony_ci+ t 548c2ecf20Sopenharmony_ci) 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci@depends on patch disable is_zero, isnt_zero@ 578c2ecf20Sopenharmony_cibool t; 588c2ecf20Sopenharmony_ci@@ 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci( 618c2ecf20Sopenharmony_ci- t == 1 628c2ecf20Sopenharmony_ci+ t 638c2ecf20Sopenharmony_ci| 648c2ecf20Sopenharmony_ci- t != 1 658c2ecf20Sopenharmony_ci+ !t 668c2ecf20Sopenharmony_ci| 678c2ecf20Sopenharmony_ci- t == 0 688c2ecf20Sopenharmony_ci+ !t 698c2ecf20Sopenharmony_ci| 708c2ecf20Sopenharmony_ci- t != 0 718c2ecf20Sopenharmony_ci+ t 728c2ecf20Sopenharmony_ci) 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci@depends on patch && boolok@ 758c2ecf20Sopenharmony_cibool b; 768c2ecf20Sopenharmony_ci@@ 778c2ecf20Sopenharmony_ci( 788c2ecf20Sopenharmony_ci b = 798c2ecf20Sopenharmony_ci- 0 808c2ecf20Sopenharmony_ci+ false 818c2ecf20Sopenharmony_ci| 828c2ecf20Sopenharmony_ci b = 838c2ecf20Sopenharmony_ci- 1 848c2ecf20Sopenharmony_ci+ true 858c2ecf20Sopenharmony_ci) 868c2ecf20Sopenharmony_ci 878c2ecf20Sopenharmony_ci// --------------------------------------------------------------------- 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci@r1 depends on !patch@ 908c2ecf20Sopenharmony_cibool t; 918c2ecf20Sopenharmony_ciposition p; 928c2ecf20Sopenharmony_ci@@ 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci( 958c2ecf20Sopenharmony_ci* t@p == true 968c2ecf20Sopenharmony_ci| 978c2ecf20Sopenharmony_ci* true == t@p 988c2ecf20Sopenharmony_ci| 998c2ecf20Sopenharmony_ci* t@p != true 1008c2ecf20Sopenharmony_ci| 1018c2ecf20Sopenharmony_ci* true != t@p 1028c2ecf20Sopenharmony_ci| 1038c2ecf20Sopenharmony_ci* t@p == false 1048c2ecf20Sopenharmony_ci| 1058c2ecf20Sopenharmony_ci* false == t@p 1068c2ecf20Sopenharmony_ci| 1078c2ecf20Sopenharmony_ci* t@p != false 1088c2ecf20Sopenharmony_ci| 1098c2ecf20Sopenharmony_ci* false != t@p 1108c2ecf20Sopenharmony_ci) 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci@r2 depends on !patch disable is_zero, isnt_zero@ 1138c2ecf20Sopenharmony_cibool t; 1148c2ecf20Sopenharmony_ciposition p; 1158c2ecf20Sopenharmony_ci@@ 1168c2ecf20Sopenharmony_ci 1178c2ecf20Sopenharmony_ci( 1188c2ecf20Sopenharmony_ci* t@p == 1 1198c2ecf20Sopenharmony_ci| 1208c2ecf20Sopenharmony_ci* t@p != 1 1218c2ecf20Sopenharmony_ci| 1228c2ecf20Sopenharmony_ci* t@p == 0 1238c2ecf20Sopenharmony_ci| 1248c2ecf20Sopenharmony_ci* t@p != 0 1258c2ecf20Sopenharmony_ci) 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_ci@r3 depends on !patch && boolok@ 1288c2ecf20Sopenharmony_cibool b; 1298c2ecf20Sopenharmony_ciposition p1; 1308c2ecf20Sopenharmony_ci@@ 1318c2ecf20Sopenharmony_ci( 1328c2ecf20Sopenharmony_ci*b@p1 = 0 1338c2ecf20Sopenharmony_ci| 1348c2ecf20Sopenharmony_ci*b@p1 = 1 1358c2ecf20Sopenharmony_ci) 1368c2ecf20Sopenharmony_ci 1378c2ecf20Sopenharmony_ci@r4 depends on !patch@ 1388c2ecf20Sopenharmony_cibool b; 1398c2ecf20Sopenharmony_ciposition p2; 1408c2ecf20Sopenharmony_ciidentifier i; 1418c2ecf20Sopenharmony_ciconstant c != {0,1}; 1428c2ecf20Sopenharmony_ci@@ 1438c2ecf20Sopenharmony_ci( 1448c2ecf20Sopenharmony_ci b = i 1458c2ecf20Sopenharmony_ci| 1468c2ecf20Sopenharmony_ci*b@p2 = c 1478c2ecf20Sopenharmony_ci) 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ci@script:python depends on org@ 1508c2ecf20Sopenharmony_cip << r1.p; 1518c2ecf20Sopenharmony_ci@@ 1528c2ecf20Sopenharmony_ci 1538c2ecf20Sopenharmony_cicocci.print_main("WARNING: Comparison to bool",p) 1548c2ecf20Sopenharmony_ci 1558c2ecf20Sopenharmony_ci@script:python depends on org@ 1568c2ecf20Sopenharmony_cip << r2.p; 1578c2ecf20Sopenharmony_ci@@ 1588c2ecf20Sopenharmony_ci 1598c2ecf20Sopenharmony_cicocci.print_main("WARNING: Comparison of 0/1 to bool variable",p) 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci@script:python depends on org@ 1628c2ecf20Sopenharmony_cip1 << r3.p1; 1638c2ecf20Sopenharmony_ci@@ 1648c2ecf20Sopenharmony_ci 1658c2ecf20Sopenharmony_cicocci.print_main("WARNING: Assignment of 0/1 to bool variable",p1) 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ci@script:python depends on org@ 1688c2ecf20Sopenharmony_cip2 << r4.p2; 1698c2ecf20Sopenharmony_ci@@ 1708c2ecf20Sopenharmony_ci 1718c2ecf20Sopenharmony_cicocci.print_main("ERROR: Assignment of non-0/1 constant to bool variable",p2) 1728c2ecf20Sopenharmony_ci 1738c2ecf20Sopenharmony_ci@script:python depends on report@ 1748c2ecf20Sopenharmony_cip << r1.p; 1758c2ecf20Sopenharmony_ci@@ 1768c2ecf20Sopenharmony_ci 1778c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],"WARNING: Comparison to bool") 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ci@script:python depends on report@ 1808c2ecf20Sopenharmony_cip << r2.p; 1818c2ecf20Sopenharmony_ci@@ 1828c2ecf20Sopenharmony_ci 1838c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],"WARNING: Comparison of 0/1 to bool variable") 1848c2ecf20Sopenharmony_ci 1858c2ecf20Sopenharmony_ci@script:python depends on report@ 1868c2ecf20Sopenharmony_cip1 << r3.p1; 1878c2ecf20Sopenharmony_ci@@ 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_cicoccilib.report.print_report(p1[0],"WARNING: Assignment of 0/1 to bool variable") 1908c2ecf20Sopenharmony_ci 1918c2ecf20Sopenharmony_ci@script:python depends on report@ 1928c2ecf20Sopenharmony_cip2 << r4.p2; 1938c2ecf20Sopenharmony_ci@@ 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_cicoccilib.report.print_report(p2[0],"ERROR: Assignment of non-0/1 constant to bool variable") 196