hyperv: Add processing of MTU reduced by the host
[linux/fpc-iii.git] / scripts / coccinelle / misc / simple_return.cocci
blob47f7084b6360a0fa8aa378e7e630dea33f002a88
1 /// Simplify a trivial if-return sequence.  Possibly combine with a
2 /// preceding function call.
3 //
4 // Confidence: High
5 // Copyright: (C) 2014 Julia Lawall, INRIA/LIP6.  GPLv2.
6 // Copyright: (C) 2014 Gilles Muller, INRIA/LiP6.  GPLv2.
7 // URL: http://coccinelle.lip6.fr/
8 // Comments:
9 // Options: --no-includes --include-headers
11 virtual patch
12 virtual context
13 virtual org
14 virtual report
16 @r depends on patch@
17 local idexpression e;
18 identifier i,f,fn;
21 fn(...) { <...
22 - e@i =
23 + return
24     f(...);
25 -if (i != 0) return i;
26 -return 0;
27 ...> }
29 @depends on patch@
30 identifier r.i;
31 type t;
34 -t i;
35  ... when != i
37 @depends on patch@
38 expression e;
41 -if (e != 0)
42    return e;
43 -return 0;
45 // -----------------------------------------------------------------------
47 @s1 depends on context || org || report@
48 local idexpression e;
49 identifier i,f,fn;
50 position p,p1,p2;
53 fn(...) { <...
54 * e@i@p = f(...);
55   if (\(i@p1 != 0\|i@p2 < 0\))
56      return i;
57   return 0;
58 ...> }
60 @s2 depends on context || org || report forall@
61 identifier s1.i;
62 type t;
63 position q,s1.p;
64 expression e,f;
67 * t i@q;
68   ... when != i
69   e@p = f(...);
71 @s3 depends on context || org || report@
72 expression e;
73 position p1!=s1.p1;
74 position p2!=s1.p2;
77 *if (\(e@p1 != 0\|e@p2 < 0\))
78    return e;
79  return 0;
81 // -----------------------------------------------------------------------
83 @script:python depends on org@
84 p << s1.p;
85 p1 << s1.p1;
86 q << s2.q;
89 cocci.print_main("decl",q)
90 cocci.print_secs("use",p)
91 cocci.include_match(False)
93 @script:python depends on org@
94 p << s1.p;
95 p2 << s1.p2;
96 q << s2.q;
99 cocci.print_main("decl",q)
100 cocci.print_secs("use with questionable test",p)
101 cocci.include_match(False)
103 @script:python depends on org@
104 p << s1.p;
105 p1 << s1.p1;
108 cocci.print_main("use",p)
110 @script:python depends on org@
111 p << s1.p;
112 p2 << s1.p2;
115 cocci.print_main("use with questionable test",p)
117 @script:python depends on org@
118 p << s3.p1;
121 cocci.print_main("test",p)
123 @script:python depends on org@
124 p << s3.p2;
127 cocci.print_main("questionable test",p)
129 // -----------------------------------------------------------------------
131 @script:python depends on report@
132 p << s1.p;
133 p1 << s1.p1;
134 q << s2.q;
137 msg = "WARNING: end returns can be simpified and declaration on line %s can be dropped" % (q[0].line)
138 coccilib.report.print_report(p[0],msg)
139 cocci.include_match(False)
141 @script:python depends on report@
142 p << s1.p;
143 p1 << s1.p1;
144 q << s2.q
148 msg = "WARNING: end returns may be simpified if negative or 0 value and declaration on line %s can be dropped" % (q[0].line)
149 coccilib.report.print_report(p[0],msg)
150 cocci.include_match(False)
152 @script:python depends on report@
153 p << s1.p;
154 p1 << s1.p1;
157 msg = "WARNING: end returns can be simpified"
158 coccilib.report.print_report(p[0],msg)
160 @script:python depends on report@
161 p << s1.p;
162 p2 << s1.p2;
165 msg = "WARNING: end returns can be simpified if negative or 0 value"
166 coccilib.report.print_report(p[0],msg)
168 @script:python depends on report@
169 p << s3.p1;
172 msg = "WARNING: end returns can be simpified"
173 coccilib.report.print_report(p[0],msg)
175 @script:python depends on report@
176 p << s3.p2;
179 msg = "WARNING: end returns can be simpified if tested value is negative or 0"
180 coccilib.report.print_report(p[0],msg)