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 c8ffb3a75..d79244bd2 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 @@ -309,7 +309,7 @@ public class FallThroughCheck extends Check { final DetailAST caseBody = caseGroup.findFirstToken(TokenTypes.SLIST); - isTerminated &= isTerminated(caseBody, false, useContinue); + isTerminated = caseBody != null && isTerminated(caseBody, false, useContinue); caseGroup = caseGroup.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 2af3d8ffd..7467ddc87 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 @@ -45,6 +45,7 @@ public class FallThroughCheckTest extends BaseCheckTestSupport "369:11: " + getCheckMessage(MSG_FALL_THROUGH), "372:11: " + getCheckMessage(MSG_FALL_THROUGH), "374:40: " + getCheckMessage(MSG_FALL_THROUGH), + "416:13: " + getCheckMessage(MSG_FALL_THROUGH), }; verify(checkConfig, getPath("coding" + File.separator + "InputFallThrough.java"), @@ -69,6 +70,7 @@ public class FallThroughCheckTest extends BaseCheckTestSupport "372:11: " + getCheckMessage(MSG_FALL_THROUGH), "374:40: " + getCheckMessage(MSG_FALL_THROUGH), "376:11: " + getCheckMessage(MSG_FALL_THROUGH_LAST), + "416:13: " + getCheckMessage(MSG_FALL_THROUGH), }; verify(checkConfig, getPath("coding" + File.separator + "InputFallThrough.java"), @@ -112,6 +114,7 @@ public class FallThroughCheckTest extends BaseCheckTestSupport "348:11: " + getCheckMessage(MSG_FALL_THROUGH), "351:11: " + getCheckMessage(MSG_FALL_THROUGH), "353:30: " + getCheckMessage(MSG_FALL_THROUGH), + "416:13: " + getCheckMessage(MSG_FALL_THROUGH), }; verify(checkConfig, getPath("coding" + File.separator + "InputFallThrough.java"), diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFallThrough.java b/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFallThrough.java index 4326b954d..51d70374b 100644 --- a/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFallThrough.java +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/coding/InputFallThrough.java @@ -406,4 +406,14 @@ public class InputFallThrough default: } } + + void nestedSwitches() { + switch (hashCode()) { + case 1: + switch (hashCode()) { // causing NullPointerException in the past + case 1: + } + default: // violation - no fall through comment + } + } }