|
@@ -1,180 +0,0 @@
|
|
|
-/// Simplify a trivial if-return sequence. Possibly combine with a
|
|
|
-/// preceding function call.
|
|
|
-///
|
|
|
-// Confidence: High
|
|
|
-// Copyright: (C) 2014 Julia Lawall, INRIA/LIP6. GPLv2.
|
|
|
-// Copyright: (C) 2014 Gilles Muller, INRIA/LiP6. GPLv2.
|
|
|
-// URL: http://coccinelle.lip6.fr/
|
|
|
-// Comments:
|
|
|
-// Options: --no-includes --include-headers
|
|
|
-
|
|
|
-virtual patch
|
|
|
-virtual context
|
|
|
-virtual org
|
|
|
-virtual report
|
|
|
-
|
|
|
-@r depends on patch@
|
|
|
-local idexpression e;
|
|
|
-identifier i,f,fn;
|
|
|
-@@
|
|
|
-
|
|
|
-fn(...) { <...
|
|
|
-- e@i =
|
|
|
-+ return
|
|
|
- f(...);
|
|
|
--if (i != 0) return i;
|
|
|
--return 0;
|
|
|
-...> }
|
|
|
-
|
|
|
-@depends on patch@
|
|
|
-identifier r.i;
|
|
|
-type t;
|
|
|
-@@
|
|
|
-
|
|
|
--t i;
|
|
|
- ... when != i
|
|
|
-
|
|
|
-@depends on patch@
|
|
|
-expression e;
|
|
|
-@@
|
|
|
-
|
|
|
--if (e != 0)
|
|
|
- return e;
|
|
|
--return 0;
|
|
|
-
|
|
|
-// -----------------------------------------------------------------------
|
|
|
-
|
|
|
-@s1 depends on context || org || report@
|
|
|
-local idexpression e;
|
|
|
-identifier i,f,fn;
|
|
|
-position p,p1,p2;
|
|
|
-@@
|
|
|
-
|
|
|
-fn(...) { <...
|
|
|
-* e@i@p = f(...);
|
|
|
- if (\(i@p1 != 0\|i@p2 < 0\))
|
|
|
- return i;
|
|
|
- return 0;
|
|
|
-...> }
|
|
|
-
|
|
|
-@s2 depends on context || org || report forall@
|
|
|
-identifier s1.i;
|
|
|
-type t;
|
|
|
-position q,s1.p;
|
|
|
-expression e,f;
|
|
|
-@@
|
|
|
-
|
|
|
-* t i@q;
|
|
|
- ... when != i
|
|
|
- e@p = f(...);
|
|
|
-
|
|
|
-@s3 depends on context || org || report@
|
|
|
-expression e;
|
|
|
-position p1!=s1.p1;
|
|
|
-position p2!=s1.p2;
|
|
|
-@@
|
|
|
-
|
|
|
-*if (\(e@p1 != 0\|e@p2 < 0\))
|
|
|
- return e;
|
|
|
- return 0;
|
|
|
-
|
|
|
-// -----------------------------------------------------------------------
|
|
|
-
|
|
|
-@script:python depends on org@
|
|
|
-p << s1.p;
|
|
|
-p1 << s1.p1;
|
|
|
-q << s2.q;
|
|
|
-@@
|
|
|
-
|
|
|
-cocci.print_main("decl",q)
|
|
|
-cocci.print_secs("use",p)
|
|
|
-cocci.include_match(False)
|
|
|
-
|
|
|
-@script:python depends on org@
|
|
|
-p << s1.p;
|
|
|
-p2 << s1.p2;
|
|
|
-q << s2.q;
|
|
|
-@@
|
|
|
-
|
|
|
-cocci.print_main("decl",q)
|
|
|
-cocci.print_secs("use with questionable test",p)
|
|
|
-cocci.include_match(False)
|
|
|
-
|
|
|
-@script:python depends on org@
|
|
|
-p << s1.p;
|
|
|
-p1 << s1.p1;
|
|
|
-@@
|
|
|
-
|
|
|
-cocci.print_main("use",p)
|
|
|
-
|
|
|
-@script:python depends on org@
|
|
|
-p << s1.p;
|
|
|
-p2 << s1.p2;
|
|
|
-@@
|
|
|
-
|
|
|
-cocci.print_main("use with questionable test",p)
|
|
|
-
|
|
|
-@script:python depends on org@
|
|
|
-p << s3.p1;
|
|
|
-@@
|
|
|
-
|
|
|
-cocci.print_main("test",p)
|
|
|
-
|
|
|
-@script:python depends on org@
|
|
|
-p << s3.p2;
|
|
|
-@@
|
|
|
-
|
|
|
-cocci.print_main("questionable test",p)
|
|
|
-
|
|
|
-// -----------------------------------------------------------------------
|
|
|
-
|
|
|
-@script:python depends on report@
|
|
|
-p << s1.p;
|
|
|
-p1 << s1.p1;
|
|
|
-q << s2.q;
|
|
|
-@@
|
|
|
-
|
|
|
-msg = "WARNING: end returns can be simpified and declaration on line %s can be dropped" % (q[0].line)
|
|
|
-coccilib.report.print_report(p[0],msg)
|
|
|
-cocci.include_match(False)
|
|
|
-
|
|
|
-@script:python depends on report@
|
|
|
-p << s1.p;
|
|
|
-p1 << s1.p1;
|
|
|
-q << s2.q
|
|
|
-;
|
|
|
-@@
|
|
|
-
|
|
|
-msg = "WARNING: end returns may be simpified if negative or 0 value and declaration on line %s can be dropped" % (q[0].line)
|
|
|
-coccilib.report.print_report(p[0],msg)
|
|
|
-cocci.include_match(False)
|
|
|
-
|
|
|
-@script:python depends on report@
|
|
|
-p << s1.p;
|
|
|
-p1 << s1.p1;
|
|
|
-@@
|
|
|
-
|
|
|
-msg = "WARNING: end returns can be simpified"
|
|
|
-coccilib.report.print_report(p[0],msg)
|
|
|
-
|
|
|
-@script:python depends on report@
|
|
|
-p << s1.p;
|
|
|
-p2 << s1.p2;
|
|
|
-@@
|
|
|
-
|
|
|
-msg = "WARNING: end returns can be simpified if negative or 0 value"
|
|
|
-coccilib.report.print_report(p[0],msg)
|
|
|
-
|
|
|
-@script:python depends on report@
|
|
|
-p << s3.p1;
|
|
|
-@@
|
|
|
-
|
|
|
-msg = "WARNING: end returns can be simpified"
|
|
|
-coccilib.report.print_report(p[0],msg)
|
|
|
-
|
|
|
-@script:python depends on report@
|
|
|
-p << s3.p2;
|
|
|
-@@
|
|
|
-
|
|
|
-msg = "WARNING: end returns can be simpified if tested value is negative or 0"
|
|
|
-coccilib.report.print_report(p[0],msg)
|