1 // RUN: %check_clang_tidy %s readability-simplify-boolean-expr %t -- -config="{CheckOptions: [{key: "readability-simplify-boolean-expr.ChainedConditionalReturn", value: 1}]}" --
2
chained_conditional_compound_return(int i)3 bool chained_conditional_compound_return(int i) {
4 if (i < 0) {
5 return true;
6 } else if (i < 10) {
7 return false;
8 } else if (i > 20) {
9 return true;
10 } else {
11 return false;
12 }
13 // CHECK-MESSAGES: :[[@LINE-4]]:12: warning: redundant boolean literal in conditional return statement [readability-simplify-boolean-expr]
14 // CHECK-FIXES: {{^}} } else if (i < 10) {{{$}}
15 // CHECK-FIXES-NEXT: {{^}} return false;{{$}}
16 // CHECK-FIXES-NEXT: {{^}} } else return i > 20;{{$}}
17 }
18
chained_conditional_return(int i)19 bool chained_conditional_return(int i) {
20 if (i < 0)
21 return true;
22 else if (i < 10)
23 return false;
24 else if (i > 20)
25 return true;
26 else
27 return false;
28 // CHECK-MESSAGES: :[[@LINE-3]]:12: warning: {{.*}} in conditional return statement
29 // CHECK-FIXES: {{^}} else if (i < 10)
30 // CHECK-FIXES-NEXT: {{^}} return false;
31 // CHECK-FIXES-NEXT: {{^}} else return i > 20;
32 }
33
chained_simple_if_return(int i)34 bool chained_simple_if_return(int i) {
35 if (i < 5)
36 return true;
37 if (i > 10)
38 return true;
39 return false;
40 }
41 // CHECK-MESSAGES: :[[@LINE-3]]:12: warning: {{.*}} in conditional return
42 // CHECK-FIXES: {{^}}bool chained_simple_if_return(int i) {{{$}}
43 // CHECK-FIXES: {{^}} if (i < 5){{$}}
44 // CHECK-FIXES: {{^ return true;$}}
45 // CHECK-FIXES: {{^ return i > 10;$}}
46 // CHECK-FIXES: {{^}$}}
47
chained_simple_if_return_negated(int i)48 bool chained_simple_if_return_negated(int i) {
49 if (i < 5)
50 return false;
51 if (i > 10)
52 return false;
53 return true;
54 }
55 // CHECK-MESSAGES: :[[@LINE-3]]:12: warning: {{.*}} in conditional return
56 // CHECK-FIXES: {{^}}bool chained_simple_if_return_negated(int i) {{{$}}
57 // CHECK-FIXES: {{^}} if (i < 5){{$}}
58 // CHECK-FIXES: {{^ return false;$}}
59 // CHECK-FIXES: {{^ return i <= 10;$}}
60 // CHECK-FIXES: {{^}$}}
61
complex_chained_if_return_return(int i)62 bool complex_chained_if_return_return(int i) {
63 if (i < 5) {
64 return true;
65 }
66 if (i > 10) {
67 return true;
68 }
69 return false;
70 }
71 // CHECK-MESSAGES: :[[@LINE-4]]:12: warning: {{.*}} in conditional return
72 // CHECK-FIXES: {{^}}bool complex_chained_if_return_return(int i) {{{$}}
73 // CHECK-FIXES: {{^}} if (i < 5) {{{$}}
74 // CHECK-FIXES: {{^}} return true;{{$}}
75 // CHECK-FIXES: {{^}} }{{$}}
76 // CHECK-FIXES: {{^ return i > 10;$}}
77 // CHECK-FIXES: {{^}$}}
78
complex_chained_if_return_return_negated(int i)79 bool complex_chained_if_return_return_negated(int i) {
80 if (i < 5) {
81 return false;
82 }
83 if (i > 10) {
84 return false;
85 }
86 return true;
87 }
88 // CHECK-MESSAGES: :[[@LINE-4]]:12: warning: {{.*}} in conditional return
89 // CHECK-FIXES: {{^}}bool complex_chained_if_return_return_negated(int i) {{{$}}
90 // CHECK-FIXES: {{^}} if (i < 5) {{{$}}
91 // CHECK-FIXES: {{^}} return false;{{$}}
92 // CHECK-FIXES: {{^}} }{{$}}
93 // CHECK-FIXES: {{^ return i <= 10;$}}
94 // CHECK-FIXES: {{^}$}}
95