// 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 | |
} |