Linux 5.0.8
[linux/fpc-iii.git] / scripts / coccinelle / tests / doubletest.cocci
blob7af2ce7eb9bf78fd93955619e7a27ccd3162c94c
1 /// Find &&/|| operations that include the same argument more than once
2 //# A common source of false positives is when the expression, or
3 //# another expresssion in the same && or || operation, performs a
4 //# side effect.
5 ///
6 // Confidence: Moderate
7 // Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2.
8 // Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
9 // Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
10 // URL: http://coccinelle.lip6.fr/
11 // Comments:
12 // Options: --no-includes --include-headers
14 virtual context
15 virtual org
16 virtual report
18 @r expression@
19 expression E;
20 position p;
24  E@p || ... || E
26  E@p && ... && E
29 @bad@
30 expression r.E,e1,e2,fn;
31 position r.p;
32 assignment operator op;
36 E@p
38  <+... \(fn(...)\|e1 op e2\|e1++\|e1--\|++e1\|--e1\) ...+>
41 @depends on context && !bad@
42 expression r.E;
43 position r.p;
46 *E@p
48 @script:python depends on org && !bad@
49 p << r.p;
52 cocci.print_main("duplicated argument to && or ||",p)
54 @script:python depends on report && !bad@
55 p << r.p;
58 coccilib.report.print_report(p[0],"duplicated argument to && or ||")