xref: /linux/scripts/coccinelle/misc/boolconv.cocci (revision 0526b56cbc3c489642bd6a5fe4b718dea7ef0ee8)
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
9virtual patch
10virtual context
11virtual org
12virtual report
13
14//----------------------------------------------------------
15//  For patch mode
16//----------------------------------------------------------
17
18@depends on patch@
19expression A, B;
20symbol 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@
47expression A, B;
48symbol true, false;
49position 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@
76p << r.p;
77@@
78
79msg = "WARNING: conversion to bool not needed here"
80coccilib.org.print_todo(p[0], msg)
81
82//----------------------------------------------------------
83//  For report mode
84//----------------------------------------------------------
85
86@script:python depends on r&&report@
87p << r.p;
88@@
89
90msg = "WARNING: conversion to bool not needed here"
91coccilib.report.print_report(p[0], msg)
92