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