staging: ks7010: move null check before dereference
[linux/fpc-iii.git] / scripts / coccinelle / misc / boolinit.cocci
blobb9abed49cd95c5c99841a4e5016eb3c4fda4c1fb
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 @depends on patch@
17 bool t;
18 symbol true;
19 symbol false;
23 - t == true
24 + t
26 - true == t
27 + t
29 - t != true
30 + !t
32 - true != t
33 + !t
35 - t == false
36 + !t
38 - false == t
39 + !t
41 - t != false
42 + t
44 - false != t
45 + t
48 @depends on patch disable is_zero, isnt_zero@
49 bool t;
53 - t == 1
54 + t
56 - t != 1
57 + !t
59 - t == 0
60 + !t
62 - t != 0
63 + t
66 @depends on patch@
67 bool b;
70  b =
71 - 0
72 + false
74  b =
75 - 1
76 + true
79 // ---------------------------------------------------------------------
81 @r1 depends on !patch@
82 bool t;
83 position p;
87 * t@p == true
89 * true == t@p
91 * t@p != true
93 * true != t@p
95 * t@p == false
97 * false == t@p
99 * t@p != false
101 * false != t@p
104 @r2 depends on !patch disable is_zero, isnt_zero@
105 bool t;
106 position p;
110 * t@p == 1
112 * t@p != 1
114 * t@p == 0
116 * t@p != 0
119 @r3 depends on !patch@
120 bool b;
121 position p1,p2;
122 constant c;
125 *b@p1 = 0
127 *b@p1 = 1
129 *b@p2 = c
132 @script:python depends on org@
133 p << r1.p;
136 cocci.print_main("WARNING: Comparison to bool",p)
138 @script:python depends on org@
139 p << r2.p;
142 cocci.print_main("WARNING: Comparison of bool to 0/1",p)
144 @script:python depends on org@
145 p1 << r3.p1;
148 cocci.print_main("WARNING: Assignment of bool to 0/1",p1)
150 @script:python depends on org@
151 p2 << r3.p2;
154 cocci.print_main("ERROR: Assignment of bool to non-0/1 constant",p2)
156 @script:python depends on report@
157 p << r1.p;
160 coccilib.report.print_report(p[0],"WARNING: Comparison to bool")
162 @script:python depends on report@
163 p << r2.p;
166 coccilib.report.print_report(p[0],"WARNING: Comparison of bool to 0/1")
168 @script:python depends on report@
169 p1 << r3.p1;
172 coccilib.report.print_report(p1[0],"WARNING: Assignment of bool to 0/1")
174 @script:python depends on report@
175 p2 << r3.p2;
178 coccilib.report.print_report(p2[0],"ERROR: Assignment of bool to non-0/1 constant")