| // RUN: %check_clang_tidy %s readability-misleading-indentation %t |
| |
| void foo1(); |
| void foo2(); |
| |
| #define BLOCK \ |
| if (cond1) \ |
| foo1(); \ |
| foo2(); |
| |
| int main() |
| { |
| bool cond1 = true; |
| bool cond2 = true; |
| |
| if (cond1) |
| if (cond2) |
| foo1(); |
| else |
| foo2(); |
| // CHECK-MESSAGES: :[[@LINE-2]]:3: warning: different indentation for 'if' and corresponding 'else' [readability-misleading-indentation] |
| |
| if (cond1) { |
| if (cond2) |
| foo1(); |
| } |
| else |
| foo2(); |
| |
| if (cond1) |
| if (cond2) |
| foo1(); |
| else |
| foo2(); |
| |
| if (cond2) |
| foo1(); |
| foo2(); |
| // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: misleading indentation: statement is indented too deeply [readability-misleading-indentation] |
| // CHECK-MESSAGES: :[[@LINE-4]]:3: note: did you mean this line to be inside this 'if' |
| foo2(); // No redundant warning. |
| |
| if (cond1) |
| { |
| foo1(); |
| } |
| foo2(); |
| |
| if (cond1) |
| foo1(); |
| foo2(); |
| |
| if (cond2) |
| if (cond1) foo1(); else foo2(); |
| |
| if (cond1) { |
| } else { |
| } |
| |
| if (cond1) { |
| } |
| else { |
| } |
| |
| if (cond1) |
| { |
| } |
| else |
| { |
| } |
| |
| if (cond1) |
| { |
| } |
| else |
| { |
| } |
| |
| if(cond1) { |
| } |
| else if (cond2) { |
| } |
| else { |
| } |
| |
| if(cond1) { |
| } |
| else if (cond2) { |
| } |
| else { |
| } |
| // CHECK-MESSAGES: :[[@LINE-2]]:8: warning: different indentation for 'if' and corresponding 'else' [readability-misleading-indentation] |
| |
| if (cond1) { |
| if (cond1) { |
| } |
| else if (cond2) { |
| } |
| else { |
| } |
| if (cond1) { |
| } else if (cond2) { |
| } else if (!cond2) { |
| } else { |
| } |
| } |
| else if (cond2) { |
| } |
| |
| BLOCK |
| } |