diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java index 9de3c1f4d..7dabcd007 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheck.java @@ -481,15 +481,19 @@ public class RequireThisCheck extends AbstractCheck { final DetailAST blockStartToken = definitionToken.findFirstToken(TokenTypes.SLIST); final DetailAST blockEndToken = getBlockEndToken(blockFrameNameIdent, blockStartToken); - final Set variableUsagesInsideBlock = - getAllTokensWhichAreEqualToCurrent(definitionToken, ident, blockEndToken.getLineNo()); - boolean userDefinedArrangementOfThis = false; - for (DetailAST variableUsage : variableUsagesInsideBlock) { - final DetailAST prevSibling = variableUsage.getPreviousSibling(); - if (prevSibling != null - && prevSibling.getType() == TokenTypes.LITERAL_THIS) { - userDefinedArrangementOfThis = true; + + if (blockEndToken != null) { + final Set variableUsagesInsideBlock = + getAllTokensWhichAreEqualToCurrent(definitionToken, ident, + blockEndToken.getLineNo()); + + for (DetailAST variableUsage : variableUsagesInsideBlock) { + final DetailAST prevSibling = variableUsage.getPreviousSibling(); + if (prevSibling != null + && prevSibling.getType() == TokenTypes.LITERAL_THIS) { + userDefinedArrangementOfThis = true; + } } } return userDefinedArrangementOfThis; diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java index 6c2af2340..fcafa596c 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/coding/RequireThisCheckTest.java @@ -247,4 +247,12 @@ public class RequireThisCheckTest extends BaseCheckTestSupport { final String[] expected = CommonUtils.EMPTY_STRING_ARRAY; verify(checkConfig, getPath("InputRequireThisReceiver.java"), expected); } + + @Test + public void testBraceAlone() throws Exception { + final DefaultConfiguration checkConfig = createCheckConfig(RequireThisCheck.class); + checkConfig.addAttribute("validateOnlyOverlapping", "false"); + final String[] expected = CommonUtils.EMPTY_STRING_ARRAY; + verify(checkConfig, getPath("InputRequireThisBraceAlone.java"), expected); + } } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/InputRequireThisBraceAlone.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/InputRequireThisBraceAlone.java new file mode 100644 index 000000000..3d3a39e54 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/coding/InputRequireThisBraceAlone.java @@ -0,0 +1,17 @@ +package com.puppycrawl.tools.checkstyle.checks.coding; + +public final class InputRequireThisBraceAlone { + protected void test() throws Exception { + { + boolean var1 = false; + + var1 = true; + } + + { + boolean var2 = false; + + var2 = true; + } + } +} \ No newline at end of file