diff --git a/src/it/java/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughTest.java b/src/it/java/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughTest.java index f9ce492bc..00188d0a5 100644 --- a/src/it/java/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughTest.java +++ b/src/it/java/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughTest.java @@ -50,7 +50,6 @@ public class FallThroughTest extends BaseCheckTestSupport { "53:13: " + msg, "70:13: " + msg, "87:13: " + msg, - "105:13: " + msg, "123:13: " + msg, "179:11: " + msg, "369:11: " + msg, diff --git a/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughInput.java b/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughInput.java index 37aee1655..8b6590b07 100644 --- a/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughInput.java +++ b/src/it/resources/com/google/checkstyle/test/chapter4formatting/rule4842fallthrough/FallThroughInput.java @@ -102,7 +102,7 @@ public class FallThroughInput } finally { i++; } - case 23: //warn + case 23: switch (j) { case 1: continue; diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheck.java index 7ff5dc45f..b54ac075a 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheck.java @@ -272,20 +272,25 @@ public class FallThroughCheck extends Check { private boolean checkTry(final DetailAST ast, boolean useBreak, boolean useContinue) { final DetailAST finalStmt = ast.getLastChild(); + boolean isTerminated = false; if (finalStmt.getType() == TokenTypes.LITERAL_FINALLY) { - return isTerminated(finalStmt.findFirstToken(TokenTypes.SLIST), + isTerminated = isTerminated(finalStmt.findFirstToken(TokenTypes.SLIST), useBreak, useContinue); } - boolean isTerminated = isTerminated(ast.getFirstChild(), - useBreak, useContinue); + if (!isTerminated) { + isTerminated = isTerminated(ast.getFirstChild(), + useBreak, useContinue); - DetailAST catchStmt = ast.findFirstToken(TokenTypes.LITERAL_CATCH); - while (catchStmt != null && isTerminated) { - final DetailAST catchBody = - catchStmt.findFirstToken(TokenTypes.SLIST); - isTerminated &= isTerminated(catchBody, useBreak, useContinue); - catchStmt = catchStmt.getNextSibling(); + DetailAST catchStmt = ast.findFirstToken(TokenTypes.LITERAL_CATCH); + while (catchStmt != null + && isTerminated + && catchStmt.getType() == TokenTypes.LITERAL_CATCH) { + final DetailAST catchBody = + catchStmt.findFirstToken(TokenTypes.SLIST); + isTerminated = isTerminated(catchBody, useBreak, useContinue); + catchStmt = catchStmt.getNextSibling(); + } } return isTerminated; } diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheckTest.java index 7efc782bc..7b7f59604 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/FallThroughCheckTest.java @@ -48,7 +48,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport { "53:13: " + getCheckMessage(MSG_FALL_THROUGH), "70:13: " + getCheckMessage(MSG_FALL_THROUGH), "87:13: " + getCheckMessage(MSG_FALL_THROUGH), - "105:13: " + getCheckMessage(MSG_FALL_THROUGH), "123:13: " + getCheckMessage(MSG_FALL_THROUGH), "179:11: " + getCheckMessage(MSG_FALL_THROUGH), "369:11: " + getCheckMessage(MSG_FALL_THROUGH), @@ -76,7 +75,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport { "53:13: " + getCheckMessage(MSG_FALL_THROUGH), "70:13: " + getCheckMessage(MSG_FALL_THROUGH), "87:13: " + getCheckMessage(MSG_FALL_THROUGH), - "105:13: " + getCheckMessage(MSG_FALL_THROUGH), "123:13: " + getCheckMessage(MSG_FALL_THROUGH), "123:13: " + getCheckMessage(MSG_FALL_THROUGH_LAST), "179:11: " + getCheckMessage(MSG_FALL_THROUGH), @@ -108,7 +106,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport { "53:13: " + getCheckMessage(MSG_FALL_THROUGH), "70:13: " + getCheckMessage(MSG_FALL_THROUGH), "87:13: " + getCheckMessage(MSG_FALL_THROUGH), - "105:13: " + getCheckMessage(MSG_FALL_THROUGH), "123:13: " + getCheckMessage(MSG_FALL_THROUGH), "145:11: " + getCheckMessage(MSG_FALL_THROUGH), "170:11: " + getCheckMessage(MSG_FALL_THROUGH), @@ -116,7 +113,6 @@ public class FallThroughCheckTest extends BaseCheckTestSupport { "186:11: " + getCheckMessage(MSG_FALL_THROUGH), "204:11: " + getCheckMessage(MSG_FALL_THROUGH), "222:11: " + getCheckMessage(MSG_FALL_THROUGH), - "241:11: " + getCheckMessage(MSG_FALL_THROUGH), "252:26: " + getCheckMessage(MSG_FALL_THROUGH), "266:11: " + getCheckMessage(MSG_FALL_THROUGH), "281:11: " + getCheckMessage(MSG_FALL_THROUGH), diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/InputFallThrough.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/InputFallThrough.java index 9730e63a6..85f3d1544 100644 --- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/InputFallThrough.java +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/InputFallThrough.java @@ -102,7 +102,7 @@ public class InputFallThrough } finally { i++; } - case 23: //fall through!!! + case 23: switch (j) { case 1: continue; @@ -237,7 +237,7 @@ public class InputFallThrough } finally { i++; } - /* fallthru */ + case 23: switch (j) { case 1: