Index: clang-tools-extra/trunk/clang-tidy/readability/ElseAfterReturnCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/readability/ElseAfterReturnCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/readability/ElseAfterReturnCheck.cpp @@ -23,7 +23,7 @@ stmt(anyOf(returnStmt().bind("return"), continueStmt().bind("continue"), breakStmt().bind("break"), cxxThrowExpr().bind("throw"))); Finder->addMatcher( - stmt(forEach( + compoundStmt(forEach( ifStmt(hasThen(stmt( anyOf(ControlFlowInterruptorMatcher, compoundStmt(has(ControlFlowInterruptorMatcher))))), Index: clang-tools-extra/trunk/test/clang-tidy/readability-else-after-return.cpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/readability-else-after-return.cpp +++ clang-tools-extra/trunk/test/clang-tidy/readability-else-after-return.cpp @@ -29,32 +29,60 @@ else if (a > 10) return; else // comment-2 - // CHECK-MESSAGES: :[[@LINE-1]]:3: warning: do not use 'else' after 'return' - // CHECK-FIXES: {{^}} // comment-2 + // CHECK-FIXES-NOT: {{^}} // comment-2 f(0); + + if (a > 0) + if (a < 10) + return; + else // comment-3 + // CHECK-FIXES-NOT: {{^}} // comment-3 + f(0); + else + if (a > 10) + return; + else // comment-4 + // CHECK-FIXES-NOT: {{^}} // comment-4 + f(0); + + if (a > 0) { + if (a < 10) + return; + else // comment-5 + // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use 'else' after 'return' + // CHECK-FIXES: {{^}} // comment-5 + f(0); + } else { + if (a > 10) + return; + else // comment-6 + // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: do not use 'else' after 'return' + // CHECK-FIXES: {{^}} // comment-6 + f(0); + } } void foo() { for (unsigned x = 0; x < 42; ++x) { if (x) { continue; - } else { // comment-3 + } else { // comment-7 // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: do not use 'else' after 'continue' - // CHECK-FIXES: {{^}} } // comment-3 + // CHECK-FIXES: {{^}} } // comment-7 x++; } if (x) { break; - } else { // comment-4 + } else { // comment-8 // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: do not use 'else' after 'break' - // CHECK-FIXES: {{^}} } // comment-4 + // CHECK-FIXES: {{^}} } // comment-8 x++; } if (x) { throw 42; - } else { // comment-5 + } else { // comment-9 // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: do not use 'else' after 'throw' - // CHECK-FIXES: {{^}} } // comment-5 + // CHECK-FIXES: {{^}} } // comment-9 x++; } }