From 840034a6cb56eb86154ebdedecd60b3c2140b806 Mon Sep 17 00:00:00 2001 From: Michal Kordas Date: Sat, 27 Jun 2015 18:27:45 +0200 Subject: [PATCH] Fix exception in SuppressWarnings check on complex annotations. #1201 --- .../checks/annotation/SuppressWarningsCheck.java | 7 ++++--- .../annotation/SuppressWarningsCheckTest.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheck.java index d3fbed03e..b3dfd3244 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheck.java @@ -146,7 +146,8 @@ public class SuppressWarningsCheck extends AbstractFormatCheck { final DetailAST warningHolder = this.findWarningsHolder(annotation); - final DetailAST token = warningHolder.findFirstToken(TokenTypes.ANNOTATION_MEMBER_VALUE_PAIR); + final DetailAST token = + warningHolder.findFirstToken(TokenTypes.ANNOTATION_MEMBER_VALUE_PAIR); DetailAST warning; if (token != null) { @@ -188,8 +189,8 @@ public class SuppressWarningsCheck extends AbstractFormatCheck { case TokenTypes.DOT: break; default: - throw new IllegalStateException("Should never get here, type: " - + fChild.getType() + " text: " + fChild.getText()); + // #1252 - cases like @SuppressWarnings("un" + "used") or + // @SuppressWarnings((String) "unused") } } warning = warning.getNextSibling(); diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheckTest.java index ff189466a..059f6eb54 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/annotation/SuppressWarningsCheckTest.java @@ -826,4 +826,18 @@ public class SuppressWarningsCheckTest extends BaseCheckTestSupport { verify(checkConfig, getPath("annotation" + File.separator + "SuppressWarningsValuePair.java"), expected); } + + @Test + public void testWorkingProperlyOnComplexAnnotations() throws Exception { + DefaultConfiguration checkConfig = createCheckConfig(SuppressWarningsCheck.class); + + String[] expected = { + "18:34: " + getCheckMessage(MSG_KEY_SUPPRESSED_WARNING_NOT_ALLOWED, ""), + "24:23: " + getCheckMessage(MSG_KEY_SUPPRESSED_WARNING_NOT_ALLOWED, ""), + "28:52: " + getCheckMessage(MSG_KEY_SUPPRESSED_WARNING_NOT_ALLOWED, ""), + "33:5: " + getCheckMessage(MSG_KEY_SUPPRESSED_WARNING_NOT_ALLOWED, ""), + }; + + verify(checkConfig, getPath("InputSuppressWarningsHolder.java"), expected); + } }