lkml.org 
[lkml]   [2017]   [Oct]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH v2] coccinelle: boolconv: improve script to handle more cases
Given expressions A, B and a binary operator op, the current script checks for
cases where
A op B ? true : false can be replaced by A op B

This can be extended to handle the other case where
A op B ? false : true can be replaced by !(A op B)

Moreover we can use the binary operator type to catch all desirable comparisons
in one go instead of writing them down.

Signed-off-by: Aishwarya Pant <aishpant@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
---
Changes in v2:
Re-send after addding the appropriate mailing lists

scripts/coccinelle/misc/boolconv.cocci | 43 ++++++++--------------------------
1 file changed, 10 insertions(+), 33 deletions(-)

diff --git a/scripts/coccinelle/misc/boolconv.cocci b/scripts/coccinelle/misc/boolconv.cocci
index 33c464d6bc71..9b32b5fd31d4 100644
--- a/scripts/coccinelle/misc/boolconv.cocci
+++ b/scripts/coccinelle/misc/boolconv.cocci
@@ -16,27 +16,19 @@ virtual report

@depends on patch@
expression A, B;
+binary operator op = {==,!=,>,<,>=,<=,&&,||};
symbol true, false;
@@

(
- A == B
-|
- A != B
-|
- A > B
-|
- A < B
-|
- A >= B
-|
- A <= B
-|
- A && B
+ A op B
+- ? true : false
|
- A || B
++ !(
+ A op B
++ )
+- ? false : true
)
-- ? true : false

//----------------------------------------------------------
// For context mode
@@ -44,28 +36,13 @@ symbol true, false;

@r depends on !patch@
expression A, B;
+binary operator op = {==,!=,>,<,>=,<=,&&,||};
symbol true, false;
position p;
@@

-(
- A == B
-|
- A != B
-|
- A > B
-|
- A < B
-|
- A >= B
-|
- A <= B
-|
- A && B
-|
- A || B
-)
-* ? true : false@p
+ A op B
+* ? \(true\|false\) : \(false@p\|true@p\)

//----------------------------------------------------------
// For org mode
--
2.11.0
\
 
 \ /
  Last update: 2017-10-22 17:53    [W:0.030 / U:0.040 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site