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