linux/scripts/coccinelle/misc/excluded_middle.cocci
Denis Efremov b76f0ea013 coccinelle: misc: add excluded_middle.cocci script
Check for !A || A && B condition. It's equivalent to !A || B.

Signed-off-by: Denis Efremov <efremov@linux.com>
Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
2020-09-21 19:45:46 +02:00

40 lines
677 B
Plaintext

// SPDX-License-Identifier: GPL-2.0-only
///
/// Condition !A || A && B is equivalent to !A || B.
///
// Confidence: High
// Copyright: (C) 2020 Denis Efremov ISPRAS
// Options: --no-includes --include-headers
virtual patch
virtual context
virtual org
virtual report
@r depends on !patch@
expression A, B;
position p;
@@
* !A || (A &&@p B)
@depends on patch@
expression A, B;
@@
!A ||
- (A && B)
+ B
@script:python depends on report@
p << r.p;
@@
coccilib.report.print_report(p[0], "WARNING !A || A && B is equivalent to !A || B")
@script:python depends on org@
p << r.p;
@@
coccilib.org.print_todo(p[0], "WARNING !A || A && B is equivalent to !A || B")