diff --git a/pom.xml b/pom.xml
index df04ceeb0..ca03873e5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1202,7 +1202,6 @@
.*.checks.whitespace.AbstractParenPadCheck88100
.*.checks.whitespace.EmptyForInitializerPadCheck9193
- .*.checks.whitespace.GenericWhitespaceCheck8696
.*.checks.whitespace.NoWhitespaceAfterCheck9498
.*.checks.whitespace.NoWhitespaceBeforeCheck90100
.*.checks.whitespace.OperatorWrapCheck6881
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java
index b0dec5fcf..5f25655c9 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheck.java
@@ -115,13 +115,17 @@ public class GenericWhitespaceCheck extends Check {
@Override
public void visitToken(DetailAST ast) {
- if (ast.getType() == TokenTypes.GENERIC_START) {
- processStart(ast);
- depth++;
- }
- else if (ast.getType() == TokenTypes.GENERIC_END) {
- processEnd(ast);
- depth--;
+ switch (ast.getType()) {
+ case TokenTypes.GENERIC_START:
+ processStart(ast);
+ depth++;
+ break;
+ case TokenTypes.GENERIC_END:
+ processEnd(ast);
+ depth--;
+ break;
+ default:
+ throw new IllegalArgumentException("Unknown type " + ast);
}
}
@@ -134,7 +138,7 @@ public class GenericWhitespaceCheck extends Check {
final int before = ast.getColumnNo() - 1;
final int after = ast.getColumnNo() + 1;
- if (0 <= before && Character.isWhitespace(line.charAt(before))
+ if (before >= 0 && Character.isWhitespace(line.charAt(before))
&& !Utils.whitespaceBefore(before, line)) {
log(ast.getLineNo(), before, WS_PRECEDED, ">");
}
@@ -168,7 +172,7 @@ public class GenericWhitespaceCheck extends Check {
// should be whitespace if followed by & -+
//
final int indexOfAmp = line.indexOf('&', after);
- if (indexOfAmp != -1
+ if (indexOfAmp >= 0
&& whitespaceBetween(after, indexOfAmp, line)) {
if (indexOfAmp - after == 0) {
log(ast.getLineNo(), after, WS_NOT_PRECEDED, "&");
@@ -201,10 +205,9 @@ public class GenericWhitespaceCheck extends Check {
}
}
else if (!Character.isWhitespace(charAfter)
- && '(' != charAfter && ')' != charAfter
- && ',' != charAfter && '[' != charAfter
- && '.' != charAfter && ':' != charAfter
- && !isAfterMethodReference(ast)) {
+ && charAfter != '(' && charAfter != ')'
+ && charAfter != ',' && charAfter != '['
+ && charAfter != '.' && charAfter != ':') {
log(ast.getLineNo(), after, WS_ILLEGAL_FOLLOW, ">");
}
}
@@ -248,7 +251,7 @@ public class GenericWhitespaceCheck extends Check {
// ^ ^
// ws reqd ---+ +--- whitespace NOT required
//
- if (0 <= before) {
+ if (before >= 0) {
// Detect if the first case
final DetailAST parent = ast.getParent();
final DetailAST grandparent = parent.getParent();
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheckTest.java
index 9d517e9c7..e85cf5204 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/GenericWhitespaceCheckTest.java
@@ -19,22 +19,25 @@
package com.puppycrawl.tools.checkstyle.checks.whitespace;
-import com.google.common.collect.Maps;
-import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
-import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
+import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.WS_FOLLOWED;
+import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.WS_ILLEGAL_FOLLOW;
+import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.WS_NOT_PRECEDED;
+import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.WS_PRECEDED;
import java.io.File;
import java.util.Map;
+import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
-import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.WS_FOLLOWED;
-import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck
-.WS_ILLEGAL_FOLLOW;
-import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck
-.WS_NOT_PRECEDED;
-import static com.puppycrawl.tools.checkstyle.checks.whitespace.GenericWhitespaceCheck.WS_PRECEDED;
+import antlr.CommonHiddenStreamToken;
+
+import com.google.common.collect.Maps;
+import com.puppycrawl.tools.checkstyle.BaseCheckTestSupport;
+import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
+import com.puppycrawl.tools.checkstyle.api.DetailAST;
+import com.puppycrawl.tools.checkstyle.api.TokenTypes;
public class GenericWhitespaceCheckTest
extends BaseCheckTestSupport {
@@ -117,4 +120,24 @@ public class GenericWhitespaceCheckTest
+ "checkstyle/whitespace/"
+ "InputGenericWhitespaceMethodRef.java").getCanonicalPath(), expected);
}
+
+ @Test
+ public void testGetAcceptableTokens() {
+ GenericWhitespaceCheck genericWhitespaceCheckObj = new GenericWhitespaceCheck();
+ int[] actual = genericWhitespaceCheckObj.getAcceptableTokens();
+ int[] expected = new int[] {
+ TokenTypes.GENERIC_START,
+ TokenTypes.GENERIC_END,
+ };
+ Assert.assertNotNull(actual);
+ Assert.assertArrayEquals(expected, actual);
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testWrongTokenType() {
+ GenericWhitespaceCheck genericWhitespaceCheckObj = new GenericWhitespaceCheck();
+ DetailAST ast = new DetailAST();
+ ast.initialize(new CommonHiddenStreamToken(TokenTypes.INTERFACE_DEF, "interface"));
+ genericWhitespaceCheckObj.visitToken(ast);
+ }
}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputGenericWhitespaceCheck.java b/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputGenericWhitespaceCheck.java
index 0a5ba07fc..4386feea5 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputGenericWhitespaceCheck.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/whitespace/InputGenericWhitespaceCheck.java
@@ -62,4 +62,19 @@ class InputGenericWhitespaceCheck implements Comparable & IntEnum> {
}
+
+ public static class IntEnumValueType4> & IntEnum> {
+ }
+
+ public void beforeAndAfter() {
+ List
+<
+Integer> x = new ArrayList();
+ List
+ y = new ArrayList();
+ Map, Integer> a = new HashMap, Integer>();
+ Map, Integer> b = (Map, Integer>) a;
+ }
}