1// SPDX-License-Identifier: GPL-2.0-only 2/// Find &&/|| operations that include the same argument more than once 3//# A common source of false positives is when the expression, or 4//# another expresssion in the same && or || operation, performs a 5//# side effect. 6/// 7// Confidence: Moderate 8// Copyright: (C) 2010 Nicolas Palix, DIKU. 9// Copyright: (C) 2010 Julia Lawall, DIKU. 10// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. 11// URL: https://coccinelle.gitlabpages.inria.fr/website 12// Comments: 13// Options: --no-includes --include-headers 14 15virtual context 16virtual org 17virtual report 18 19@r expression@ 20expression E; 21position p; 22@@ 23 24( 25 E@p || ... || E 26| 27 E@p && ... && E 28) 29 30@bad@ 31expression r.E,e1,e2,fn; 32position r.p; 33assignment operator op; 34@@ 35 36( 37E@p 38& 39 <+... \(fn(...)\|e1 op e2\|e1++\|e1--\|++e1\|--e1\) ...+> 40) 41 42@depends on context && !bad@ 43expression r.E; 44position r.p; 45@@ 46 47*E@p 48 49@script:python depends on org && !bad@ 50p << r.p; 51@@ 52 53cocci.print_main("duplicated argument to && or ||",p) 54 55@script:python depends on report && !bad@ 56p << r.p; 57@@ 58 59coccilib.report.print_report(p[0],"duplicated argument to && or ||") 60