1 // RUN: %check_clang_tidy %s readability-else-after-return %t -- \
2 // RUN: -config='{CheckOptions: [ \
3 // RUN: {key: readability-else-after-return.WarnOnConditionVariables, value: false}, \
4 // RUN: ]}'
5
foo(int Y)6 bool foo(int Y) {
7 // Excess scopes are here so that the check would have to opportunity to
8 // refactor the variable out of the condition.
9
10 // Expect warnings here as we don't need to move declaration of 'X' out of the
11 // if condition as its not used in the else.
12 {
13 if (int X = Y)
14 return X < 0;
15 else
16 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use 'else' after 'return'
17 return false;
18 }
19 {
20 if (int X = Y; X)
21 return X < 0;
22 else
23 // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use 'else' after 'return'
24 return false;
25 }
26
27 // Expect no warnings for these cases, as even though its safe to move
28 // declaration of 'X' out of the if condition, that has been disabled
29 // by the options.
30 {
31 if (int X = Y)
32 return false;
33 else
34 return X < 0;
35 }
36 {
37 if (int X = Y; X)
38 return false;
39 else
40 return X < 0;
41 }
42 }
43