Linux 5.0.8
[linux/fpc-iii.git] / scripts / coccinelle / misc / boolinit.cocci
blobaabb581fab5cd158fa026eb9a10483e535256946
1 /// Bool initializations should use true and false.  Bool tests don't need
2 /// comparisons.  Based on contributions from Joe Perches, Rusty Russell
3 /// and Bruce W Allan.
4 ///
5 // Confidence: High
6 // Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.  GPLv2.
7 // Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.  GPLv2.
8 // URL: http://coccinelle.lip6.fr/
9 // Options: --include-headers
11 virtual patch
12 virtual context
13 virtual org
14 virtual report
16 @boolok@
17 symbol true,false;
20 true
22 false
25 @depends on patch@
26 bool t;
30 - t == true
31 + t
33 - true == t
34 + t
36 - t != true
37 + !t
39 - true != t
40 + !t
42 - t == false
43 + !t
45 - false == t
46 + !t
48 - t != false
49 + t
51 - false != t
52 + t
55 @depends on patch disable is_zero, isnt_zero@
56 bool t;
60 - t == 1
61 + t
63 - t != 1
64 + !t
66 - t == 0
67 + !t
69 - t != 0
70 + t
73 @depends on patch && boolok@
74 bool b;
77  b =
78 - 0
79 + false
81  b =
82 - 1
83 + true
86 // ---------------------------------------------------------------------
88 @r1 depends on !patch@
89 bool t;
90 position p;
94 * t@p == true
96 * true == t@p
98 * t@p != true
100 * true != t@p
102 * t@p == false
104 * false == t@p
106 * t@p != false
108 * false != t@p
111 @r2 depends on !patch disable is_zero, isnt_zero@
112 bool t;
113 position p;
117 * t@p == 1
119 * t@p != 1
121 * t@p == 0
123 * t@p != 0
126 @r3 depends on !patch && boolok@
127 bool b;
128 position p1;
131 *b@p1 = 0
133 *b@p1 = 1
136 @r4 depends on !patch@
137 bool b;
138 position p2;
139 identifier i;
140 constant c != {0,1};
143  b = i
145 *b@p2 = c
148 @script:python depends on org@
149 p << r1.p;
152 cocci.print_main("WARNING: Comparison to bool",p)
154 @script:python depends on org@
155 p << r2.p;
158 cocci.print_main("WARNING: Comparison of 0/1 to bool variable",p)
160 @script:python depends on org@
161 p1 << r3.p1;
164 cocci.print_main("WARNING: Assignment of 0/1 to bool variable",p1)
166 @script:python depends on org@
167 p2 << r4.p2;
170 cocci.print_main("ERROR: Assignment of non-0/1 constant to bool variable",p2)
172 @script:python depends on report@
173 p << r1.p;
176 coccilib.report.print_report(p[0],"WARNING: Comparison to bool")
178 @script:python depends on report@
179 p << r2.p;
182 coccilib.report.print_report(p[0],"WARNING: Comparison of 0/1 to bool variable")
184 @script:python depends on report@
185 p1 << r3.p1;
188 coccilib.report.print_report(p1[0],"WARNING: Assignment of 0/1 to bool variable")
190 @script:python depends on report@
191 p2 << r4.p2;
194 coccilib.report.print_report(p2[0],"ERROR: Assignment of non-0/1 constant to bool variable")