GNU Linux-libre 4.14.251-gnu1
[releases.git] / scripts / coccinelle / misc / boolconv.cocci
1 /// Remove unneeded conversion to bool
2 ///
3 //# Relational and logical operators evaluate to bool,
4 //# explicit conversion is overly verbose and unneeded.
5 //
6 // Copyright: (C) 2016 Andrew F. Davis <afd@ti.com> GPLv2.
7
8 virtual patch
9 virtual context
10 virtual org
11 virtual report
12
13 //----------------------------------------------------------
14 //  For patch mode
15 //----------------------------------------------------------
16
17 @depends on patch@
18 expression A, B;
19 symbol true, false;
20 @@
21
22 (
23   A == B
24 |
25   A != B
26 |
27   A > B
28 |
29   A < B
30 |
31   A >= B
32 |
33   A <= B
34 |
35   A && B
36 |
37   A || B
38 )
39 - ? true : false
40
41 //----------------------------------------------------------
42 //  For context mode
43 //----------------------------------------------------------
44
45 @r depends on !patch@
46 expression A, B;
47 symbol true, false;
48 position p;
49 @@
50
51 (
52   A == B
53 |
54   A != B
55 |
56   A > B
57 |
58   A < B
59 |
60   A >= B
61 |
62   A <= B
63 |
64   A && B
65 |
66   A || B
67 )
68 * ? true : false@p
69
70 //----------------------------------------------------------
71 //  For org mode
72 //----------------------------------------------------------
73
74 @script:python depends on r&&org@
75 p << r.p;
76 @@
77
78 msg = "WARNING: conversion to bool not needed here"
79 coccilib.org.print_todo(p[0], msg)
80
81 //----------------------------------------------------------
82 //  For report mode
83 //----------------------------------------------------------
84
85 @script:python depends on r&&report@
86 p << r.p;
87 @@
88
89 msg = "WARNING: conversion to bool not needed here"
90 coccilib.report.print_report(p[0], msg)