xref: /OK3568_Linux_fs/kernel/scripts/coccinelle/misc/boolinit.cocci (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun/// Bool initializations should use true and false.  Bool tests don't need
3*4882a593Smuzhiyun/// comparisons.  Based on contributions from Joe Perches, Rusty Russell
4*4882a593Smuzhiyun/// and Bruce W Allan.
5*4882a593Smuzhiyun///
6*4882a593Smuzhiyun// Confidence: High
7*4882a593Smuzhiyun// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.
8*4882a593Smuzhiyun// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.
9*4882a593Smuzhiyun// URL: http://coccinelle.lip6.fr/
10*4882a593Smuzhiyun// Options: --include-headers
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunvirtual patch
13*4882a593Smuzhiyunvirtual context
14*4882a593Smuzhiyunvirtual org
15*4882a593Smuzhiyunvirtual report
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun@boolok@
18*4882a593Smuzhiyunsymbol true,false;
19*4882a593Smuzhiyun@@
20*4882a593Smuzhiyun(
21*4882a593Smuzhiyuntrue
22*4882a593Smuzhiyun|
23*4882a593Smuzhiyunfalse
24*4882a593Smuzhiyun)
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun@depends on patch@
27*4882a593Smuzhiyunbool t;
28*4882a593Smuzhiyun@@
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun(
31*4882a593Smuzhiyun- t == true
32*4882a593Smuzhiyun+ t
33*4882a593Smuzhiyun|
34*4882a593Smuzhiyun- true == t
35*4882a593Smuzhiyun+ t
36*4882a593Smuzhiyun|
37*4882a593Smuzhiyun- t != true
38*4882a593Smuzhiyun+ !t
39*4882a593Smuzhiyun|
40*4882a593Smuzhiyun- true != t
41*4882a593Smuzhiyun+ !t
42*4882a593Smuzhiyun|
43*4882a593Smuzhiyun- t == false
44*4882a593Smuzhiyun+ !t
45*4882a593Smuzhiyun|
46*4882a593Smuzhiyun- false == t
47*4882a593Smuzhiyun+ !t
48*4882a593Smuzhiyun|
49*4882a593Smuzhiyun- t != false
50*4882a593Smuzhiyun+ t
51*4882a593Smuzhiyun|
52*4882a593Smuzhiyun- false != t
53*4882a593Smuzhiyun+ t
54*4882a593Smuzhiyun)
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun@depends on patch disable is_zero, isnt_zero@
57*4882a593Smuzhiyunbool t;
58*4882a593Smuzhiyun@@
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun(
61*4882a593Smuzhiyun- t == 1
62*4882a593Smuzhiyun+ t
63*4882a593Smuzhiyun|
64*4882a593Smuzhiyun- t != 1
65*4882a593Smuzhiyun+ !t
66*4882a593Smuzhiyun|
67*4882a593Smuzhiyun- t == 0
68*4882a593Smuzhiyun+ !t
69*4882a593Smuzhiyun|
70*4882a593Smuzhiyun- t != 0
71*4882a593Smuzhiyun+ t
72*4882a593Smuzhiyun)
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun@depends on patch && boolok@
75*4882a593Smuzhiyunbool b;
76*4882a593Smuzhiyun@@
77*4882a593Smuzhiyun(
78*4882a593Smuzhiyun b =
79*4882a593Smuzhiyun- 0
80*4882a593Smuzhiyun+ false
81*4882a593Smuzhiyun|
82*4882a593Smuzhiyun b =
83*4882a593Smuzhiyun- 1
84*4882a593Smuzhiyun+ true
85*4882a593Smuzhiyun)
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun// ---------------------------------------------------------------------
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun@r1 depends on !patch@
90*4882a593Smuzhiyunbool t;
91*4882a593Smuzhiyunposition p;
92*4882a593Smuzhiyun@@
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun(
95*4882a593Smuzhiyun* t@p == true
96*4882a593Smuzhiyun|
97*4882a593Smuzhiyun* true == t@p
98*4882a593Smuzhiyun|
99*4882a593Smuzhiyun* t@p != true
100*4882a593Smuzhiyun|
101*4882a593Smuzhiyun* true != t@p
102*4882a593Smuzhiyun|
103*4882a593Smuzhiyun* t@p == false
104*4882a593Smuzhiyun|
105*4882a593Smuzhiyun* false == t@p
106*4882a593Smuzhiyun|
107*4882a593Smuzhiyun* t@p != false
108*4882a593Smuzhiyun|
109*4882a593Smuzhiyun* false != t@p
110*4882a593Smuzhiyun)
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun@r2 depends on !patch disable is_zero, isnt_zero@
113*4882a593Smuzhiyunbool t;
114*4882a593Smuzhiyunposition p;
115*4882a593Smuzhiyun@@
116*4882a593Smuzhiyun
117*4882a593Smuzhiyun(
118*4882a593Smuzhiyun* t@p == 1
119*4882a593Smuzhiyun|
120*4882a593Smuzhiyun* t@p != 1
121*4882a593Smuzhiyun|
122*4882a593Smuzhiyun* t@p == 0
123*4882a593Smuzhiyun|
124*4882a593Smuzhiyun* t@p != 0
125*4882a593Smuzhiyun)
126*4882a593Smuzhiyun
127*4882a593Smuzhiyun@r3 depends on !patch && boolok@
128*4882a593Smuzhiyunbool b;
129*4882a593Smuzhiyunposition p1;
130*4882a593Smuzhiyun@@
131*4882a593Smuzhiyun(
132*4882a593Smuzhiyun*b@p1 = 0
133*4882a593Smuzhiyun|
134*4882a593Smuzhiyun*b@p1 = 1
135*4882a593Smuzhiyun)
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun@r4 depends on !patch@
138*4882a593Smuzhiyunbool b;
139*4882a593Smuzhiyunposition p2;
140*4882a593Smuzhiyunidentifier i;
141*4882a593Smuzhiyunconstant c != {0,1};
142*4882a593Smuzhiyun@@
143*4882a593Smuzhiyun(
144*4882a593Smuzhiyun b = i
145*4882a593Smuzhiyun|
146*4882a593Smuzhiyun*b@p2 = c
147*4882a593Smuzhiyun)
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun@script:python depends on org@
150*4882a593Smuzhiyunp << r1.p;
151*4882a593Smuzhiyun@@
152*4882a593Smuzhiyun
153*4882a593Smuzhiyuncocci.print_main("WARNING: Comparison to bool",p)
154*4882a593Smuzhiyun
155*4882a593Smuzhiyun@script:python depends on org@
156*4882a593Smuzhiyunp << r2.p;
157*4882a593Smuzhiyun@@
158*4882a593Smuzhiyun
159*4882a593Smuzhiyuncocci.print_main("WARNING: Comparison of 0/1 to bool variable",p)
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun@script:python depends on org@
162*4882a593Smuzhiyunp1 << r3.p1;
163*4882a593Smuzhiyun@@
164*4882a593Smuzhiyun
165*4882a593Smuzhiyuncocci.print_main("WARNING: Assignment of 0/1 to bool variable",p1)
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun@script:python depends on org@
168*4882a593Smuzhiyunp2 << r4.p2;
169*4882a593Smuzhiyun@@
170*4882a593Smuzhiyun
171*4882a593Smuzhiyuncocci.print_main("ERROR: Assignment of non-0/1 constant to bool variable",p2)
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun@script:python depends on report@
174*4882a593Smuzhiyunp << r1.p;
175*4882a593Smuzhiyun@@
176*4882a593Smuzhiyun
177*4882a593Smuzhiyuncoccilib.report.print_report(p[0],"WARNING: Comparison to bool")
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun@script:python depends on report@
180*4882a593Smuzhiyunp << r2.p;
181*4882a593Smuzhiyun@@
182*4882a593Smuzhiyun
183*4882a593Smuzhiyuncoccilib.report.print_report(p[0],"WARNING: Comparison of 0/1 to bool variable")
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun@script:python depends on report@
186*4882a593Smuzhiyunp1 << r3.p1;
187*4882a593Smuzhiyun@@
188*4882a593Smuzhiyun
189*4882a593Smuzhiyuncoccilib.report.print_report(p1[0],"WARNING: Assignment of 0/1 to bool variable")
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun@script:python depends on report@
192*4882a593Smuzhiyunp2 << r4.p2;
193*4882a593Smuzhiyun@@
194*4882a593Smuzhiyun
195*4882a593Smuzhiyuncoccilib.report.print_report(p2[0],"ERROR: Assignment of non-0/1 constant to bool variable")
196