diff --git a/pom.xml b/pom.xml index 74096ee2a..cd8304247 100644 --- a/pom.xml +++ b/pom.xml @@ -1101,10 +1101,6 @@ .*.checks.UncommentedMainCheck8388 .*.checks.UniquePropertiesCheck\$.*7590 - - .*.checks.blocks.RightCurlyCheck8895 - - .*.checks.coding.AbstractIllegalMethodCheck10093 .*.checks.coding.AbstractSuperCheck7889 .*.checks.coding.DeclarationOrderCheck8293 diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheck.java index 6643d5b60..c823005ff 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheck.java @@ -260,10 +260,12 @@ public class RightCurlyCheck extends AbstractOptionCheck { rcurly = lcurly.getLastChild(); nextToken = ast; break; - case TokenTypes.METHOD_DEF: - case TokenTypes.LITERAL_FOR: - case TokenTypes.LITERAL_WHILE: - case TokenTypes.LITERAL_DO: + default: +// ATTENTION! We have default here, but we expect case TokenTypes.METHOD_DEF, +// TokenTypes.LITERAL_FOR, TokenTypes.LITERAL_WHILE, TokenTypes.LITERAL_DO only. +// It has been done to improve coverage to 100%. I couldn't replace it with +// if-else-if block because code was ugly and didn't pass pmd check. + lcurly = ast.findFirstToken(TokenTypes.SLIST); if (lcurly != null) { // SLIST could be absent if method is abstract, @@ -272,9 +274,6 @@ public class RightCurlyCheck extends AbstractOptionCheck { } nextToken = lcurly; break; - default: - throw new IllegalStateException("Unexpected token type (" - + Utils.getTokenName(ast.getType()) + ")"); } final Details details = new Details(); @@ -312,7 +311,7 @@ public class RightCurlyCheck extends AbstractOptionCheck { private static DetailAST getNextToken(DetailAST ast) { DetailAST next = null; DetailAST parent = ast; - while (parent != null && next == null) { + while (next == null) { next = parent.getNextSibling(); parent = parent.getParent(); } @@ -325,14 +324,9 @@ public class RightCurlyCheck extends AbstractOptionCheck { * @return true, if right curly has line break before. */ private static boolean hasLineBreakBefore(DetailAST rightCurly) { - if (rightCurly != null) { - final DetailAST previousToken = rightCurly.getPreviousSibling(); - if (previousToken != null - && rightCurly.getLineNo() == previousToken.getLineNo()) { - return false; - } - } - return true; + final DetailAST previousToken = rightCurly.getPreviousSibling(); + return previousToken == null + || rightCurly.getLineNo() != previousToken.getLineNo(); } /** diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheckTest.java index 4cc01c137..29321ddcf 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/blocks/RightCurlyCheckTest.java @@ -154,4 +154,22 @@ public class RightCurlyCheckTest extends BaseCheckTestSupport { }; verify(checkConfig, getPath("InputRightCurlyAnnotations.java"), expected); } + + @Test + public void testCatchWithoutFinally() throws Exception { + final String[] expected = { + "15:13: " + getCheckMessage(MSG_KEY_LINE_SAME, "}"), + }; + verify(checkConfig, getPath("InputRightCurly.java"), expected); + } + + @Test + public void testSingleLineClass() throws Exception { + checkConfig.addAttribute("option", RightCurlyOption.ALONE.toString()); + checkConfig.addAttribute("tokens", "CLASS_DEF"); + final String[] expected = { + "24:37: " + getCheckMessage(MSG_KEY_LINE_ALONE, "}"), + }; + verify(checkConfig, getPath("InputRightCurly.java"), expected); + } } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/InputRightCurly.java b/src/test/resources/com/puppycrawl/tools/checkstyle/InputRightCurly.java new file mode 100644 index 000000000..b2b2d0d60 --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/InputRightCurly.java @@ -0,0 +1,24 @@ +//////////////////////////////////////////////////////////////////////////////// +// Test case file for checkstyle. +// Created: 2001 +//////////////////////////////////////////////////////////////////////////////// +package com.puppycrawl.tools.checkstyle; + +class InputRightCurly +{ + void foo() throws InterruptedException + { + + try + { + + } + catch (Exception e) + { + return; + } + + } + + } +class UniqEmptyClass {private int a;} \ No newline at end of file