aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kuchev <0coming.soon@gmail.com>2017-03-02 18:23:18 +0500
committerRoman Ivanov <romani@users.noreply.github.com>2017-03-06 17:09:44 -0800
commite70836bb3dec30734f5fd51b63d4dc6cbe24679d (patch)
treef97424ab1dfd17d04510d8b9755545aa5c0bc011 /src
parentb3cd54c7cdab80932c2ce97a9e705bdbc01b2861 (diff)
downloadcheckstyle-e70836bb3dec30734f5fd51b63d4dc6cbe24679d.tar.gz
Issue #3329: Added lambda to ParenPad
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java13
-rw-r--r--src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java99
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambda.java24
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnly.java24
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnlyWithSpace.java24
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaWithSpace.java24
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithDisabledLambda.java24
-rw-r--r--src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithSpaceAndDisabledLambda.java24
-rw-r--r--src/xdocs/config_whitespace.xml8
9 files changed, 258 insertions, 6 deletions
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java
index e152fd586..62a127da5 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheck.java
@@ -61,6 +61,7 @@ import com.puppycrawl.tools.checkstyle.utils.CommonUtils;
* {@link TokenTypes#RESOURCE_SPECIFICATION RESOURCE_SPECIFICATION},
* {@link TokenTypes#SUPER_CTOR_CALL SUPER_CTOR_CALL},
* {@link TokenTypes#QUESTION QUESTION},
+ * {@link TokenTypes#LAMBDA LAMBDA},
* </p>
* <p>
* An example of how to configure the check is:
@@ -131,7 +132,8 @@ public class ParenPadCheck extends AbstractParenPadCheck {
case TokenTypes.ENUM_CONSTANT_DEF:
case TokenTypes.LITERAL_NEW:
case TokenTypes.LITERAL_SYNCHRONIZED:
- visitNewEnumConstDefAnnotationSync(ast);
+ case TokenTypes.LAMBDA:
+ visitTokenWithOptionalParentheses(ast);
break;
default:
processLeft(ast.findFirstToken(TokenTypes.LPAREN));
@@ -140,11 +142,13 @@ public class ParenPadCheck extends AbstractParenPadCheck {
}
/**
- * Checks parens in {@link TokenTypes#ENUM_CONSTANT_DEF}, {@link TokenTypes#ANNOTATION}
- * {@link TokenTypes#LITERAL_SYNCHRONIZED} and {@link TokenTypes#LITERAL_NEW}.
+ * Checks parens in token which may not contain parens, e.g.
+ * {@link TokenTypes#ENUM_CONSTANT_DEF}, {@link TokenTypes#ANNOTATION}
+ * {@link TokenTypes#LITERAL_SYNCHRONIZED}, {@link TokenTypes#LITERAL_NEW} and
+ * {@link TokenTypes#LAMBDA}.
* @param ast the token to check.
*/
- private void visitNewEnumConstDefAnnotationSync(DetailAST ast) {
+ private void visitTokenWithOptionalParentheses(DetailAST ast) {
final DetailAST parenAst = ast.findFirstToken(TokenTypes.LPAREN);
if (parenAst != null) {
processLeft(parenAst);
@@ -229,6 +233,7 @@ public class ParenPadCheck extends AbstractParenPadCheck {
TokenTypes.QUESTION,
TokenTypes.RESOURCE_SPECIFICATION,
TokenTypes.SUPER_CTOR_CALL,
+ TokenTypes.LAMBDA,
};
}
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java
index b80c6d78b..c0d402b45 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/whitespace/ParenPadCheckTest.java
@@ -262,4 +262,103 @@ public class ParenPadCheckTest
+ "Cannot set property 'option' to 'invalid_option' in module"));
}
}
+
+ @Test
+ public void testLambdaAssignment() throws Exception {
+ final DefaultConfiguration checkConfig = createCheckConfig(ParenPadCheck.class);
+ final String[] expected = {
+ "9:42: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "9:44: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "11:43: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "13:42: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "15:47: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "15:49: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "17:47: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "17:56: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "19:62: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "19:62: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "22:21: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "22:34: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ };
+ verify(checkConfig, getPath("InputParenPadLambda.java"), expected);
+ }
+
+ @Test
+ public void testLambdaAssignmentWithSpace() throws Exception {
+ final DefaultConfiguration checkConfig = createCheckConfig(ParenPadCheck.class);
+ checkConfig.addAttribute("option", PadOption.SPACE.toString());
+ final String[] expected = {
+ "9:42: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "9:43: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ "11:42: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "13:44: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ "15:48: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "15:49: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ "17:48: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "17:56: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ "22:21: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "22:33: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ };
+ verify(checkConfig, getPath("InputParenPadLambdaWithSpace.java"), expected);
+ }
+
+ @Test
+ public void testLambdaCheckDisabled() throws Exception {
+ final DefaultConfiguration checkConfig = createCheckConfig(ParenPadCheck.class);
+ checkConfig.addAttribute("tokens", "EXPR, METHOD_CALL, METHOD_DEF");
+ final String[] expected = {
+ "19:62: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "19:62: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "22:21: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "22:34: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ };
+ verify(checkConfig, getPath("InputParenPadWithDisabledLambda.java"), expected);
+ }
+
+ @Test
+ public void testLambdaCheckDisabledWithSpace() throws Exception {
+ final DefaultConfiguration checkConfig = createCheckConfig(ParenPadCheck.class);
+ checkConfig.addAttribute("option", PadOption.SPACE.toString());
+ checkConfig.addAttribute("tokens", "EXPR, METHOD_CALL, METHOD_DEF");
+ final String[] expected = {
+ "22:21: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "22:33: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ };
+ verify(checkConfig, getPath("InputParenPadWithSpaceAndDisabledLambda.java"), expected);
+ }
+
+ @Test
+ public void testLambdaCheckOnly() throws Exception {
+ final DefaultConfiguration checkConfig = createCheckConfig(ParenPadCheck.class);
+ checkConfig.addAttribute("tokens", "LAMBDA");
+ final String[] expected = {
+ "9:42: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "9:44: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "11:43: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "13:42: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "15:47: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "15:49: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ "17:47: " + getCheckMessage(MSG_WS_FOLLOWED, "("),
+ "17:56: " + getCheckMessage(MSG_WS_PRECEDED, ")"),
+ };
+ verify(checkConfig, getPath("InputParenPadLambdaOnly.java"), expected);
+ }
+
+ @Test
+ public void testLambdaCheckOnlyWithSpace() throws Exception {
+ final DefaultConfiguration checkConfig = createCheckConfig(ParenPadCheck.class);
+ checkConfig.addAttribute("option", PadOption.SPACE.toString());
+ checkConfig.addAttribute("tokens", "LAMBDA");
+ final String[] expected = {
+ "9:42: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "9:43: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ "11:42: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "13:44: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ "15:48: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "15:49: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ "17:48: " + getCheckMessage(MSG_WS_NOT_FOLLOWED, "("),
+ "17:56: " + getCheckMessage(MSG_WS_NOT_PRECEDED, ")"),
+ };
+ verify(checkConfig, getPath("InputParenPadLambdaOnlyWithSpace.java"), expected);
+ }
}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambda.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambda.java
new file mode 100644
index 000000000..eeaa9c87b
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambda.java
@@ -0,0 +1,24 @@
+package com.puppycrawl.tools.checkstyle.checks.whitespace;
+
+class InputParenPadLambda {
+ {
+ java.util.function.Consumer a = (o) -> { o.toString(); }; // ok
+
+ java.util.function.Consumer b = o -> { o.toString(); }; // ok
+
+ java.util.function.Consumer c = ( o ) -> { o.toString(); }; // 2 violations
+
+ java.util.function.Consumer d = (o ) -> { o.toString(); }; // 1 violation
+
+ java.util.function.Consumer e = ( o) -> { o.toString(); }; // 1 violation
+
+ java.util.stream.Stream.of().forEach(( o ) -> o.toString()); // 2 violations
+
+ java.util.stream.Stream.of().forEach(( Object o ) -> o.toString()); // 2 violations
+
+ java.util.stream.Stream.of().forEach(o -> o.toString( )); // 2 violations
+ }
+
+ void someMethod( String param ) { // 2 violations
+ }
+}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnly.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnly.java
new file mode 100644
index 000000000..da6d2bb40
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnly.java
@@ -0,0 +1,24 @@
+package com.puppycrawl.tools.checkstyle.checks.whitespace;
+
+public class InputParenPadLambdaOnly {
+ {
+ java.util.function.Consumer a = (o) -> { o.toString(); }; // ok
+
+ java.util.function.Consumer b = o -> { o.toString(); }; // ok
+
+ java.util.function.Consumer c = ( o ) -> { o.toString(); }; // 2 violations
+
+ java.util.function.Consumer d = (o ) -> { o.toString(); }; // 1 violation
+
+ java.util.function.Consumer e = ( o) -> { o.toString(); }; // 1 violation
+
+ java.util.stream.Stream.of().forEach(( o ) -> o.toString()); // 2 violations
+
+ java.util.stream.Stream.of().forEach(( Object o ) -> o.toString()); // 2 violations
+
+ java.util.stream.Stream.of().forEach(o -> o.toString( )); // ok
+ }
+
+ void someMethod( String param ) { // ok
+ }
+}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnlyWithSpace.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnlyWithSpace.java
new file mode 100644
index 000000000..6a0c5e073
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaOnlyWithSpace.java
@@ -0,0 +1,24 @@
+package com.puppycrawl.tools.checkstyle.checks.whitespace;
+
+class InputParenPadLambdaOnlyWithSpace {
+ {
+ java.util.function.Consumer a = ( o ) -> { o.toString( ); }; // ok
+
+ java.util.function.Consumer b = o -> { o.toString(); }; // ok
+
+ java.util.function.Consumer c = (o) -> { o.toString(); }; // 2 violations
+
+ java.util.function.Consumer d = (o ) -> { o.toString(); }; // 1 violation
+
+ java.util.function.Consumer e = ( o) -> { o.toString(); }; // 1 violation
+
+ java.util.stream.Stream.of().forEach( (o) -> o.toString() ); // 2 violations
+
+ java.util.stream.Stream.of().forEach( (Object o) -> o.toString() ); // 2 violations
+
+ java.util.stream.Stream.of().forEach( o -> o.toString() ); // ok
+ }
+
+ void someMethod(String param) { // ok
+ }
+}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaWithSpace.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaWithSpace.java
new file mode 100644
index 000000000..5350b4185
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadLambdaWithSpace.java
@@ -0,0 +1,24 @@
+package com.puppycrawl.tools.checkstyle.checks.whitespace;
+
+class InputParenPadLambdaWithSpace {
+ {
+ java.util.function.Consumer a = ( o ) -> { o.toString( ); }; // ok
+
+ java.util.function.Consumer b = o -> { o.toString(); }; // ok
+
+ java.util.function.Consumer c = (o) -> { o.toString(); }; // 2 violations
+
+ java.util.function.Consumer d = (o ) -> { o.toString(); }; // 1 violation
+
+ java.util.function.Consumer e = ( o) -> { o.toString(); }; // 1 violation
+
+ java.util.stream.Stream.of().forEach( (o) -> o.toString() ); // 2 violations
+
+ java.util.stream.Stream.of().forEach( (Object o) -> o.toString() ); // 2 violations
+
+ java.util.stream.Stream.of().forEach( o -> o.toString() ); // ok
+ }
+
+ void someMethod(String param) { // 2 violations
+ }
+}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithDisabledLambda.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithDisabledLambda.java
new file mode 100644
index 000000000..1dccad6f4
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithDisabledLambda.java
@@ -0,0 +1,24 @@
+package com.puppycrawl.tools.checkstyle.checks.whitespace;
+
+public class InputParenPadWithDisabledLambda {
+ {
+ java.util.function.Consumer a = (o) -> { o.toString(); }; // ok
+
+ java.util.function.Consumer b = o -> { o.toString(); }; // ok
+
+ java.util.function.Consumer c = ( o ) -> { o.toString(); }; // ok
+
+ java.util.function.Consumer d = (o ) -> { o.toString(); }; // ok
+
+ java.util.function.Consumer e = ( o) -> { o.toString(); }; // ok
+
+ java.util.stream.Stream.of().forEach(( o ) -> o.toString()); // ok
+
+ java.util.stream.Stream.of().forEach(( Object o ) -> o.toString()); // ok
+
+ java.util.stream.Stream.of().forEach(o -> o.toString( )); // 2 violations
+ }
+
+ void someMethod( String param ) { // 2 violations
+ }
+}
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithSpaceAndDisabledLambda.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithSpaceAndDisabledLambda.java
new file mode 100644
index 000000000..b8df6a97b
--- /dev/null
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/whitespace/InputParenPadWithSpaceAndDisabledLambda.java
@@ -0,0 +1,24 @@
+package com.puppycrawl.tools.checkstyle.checks.whitespace;
+
+class InputParenPadWithSpaceAndDisabledLambda {
+ {
+ java.util.function.Consumer a = ( o ) -> { o.toString( ); }; // ok
+
+ java.util.function.Consumer b = o -> { o.toString(); }; // ok
+
+ java.util.function.Consumer c = (o) -> { o.toString(); }; // ok
+
+ java.util.function.Consumer d = (o ) -> { o.toString(); }; // ok
+
+ java.util.function.Consumer e = ( o) -> { o.toString(); }; // ok
+
+ java.util.stream.Stream.of().forEach( (o) -> o.toString() ); // ok
+
+ java.util.stream.Stream.of().forEach( (Object o) -> o.toString() ); // ok
+
+ java.util.stream.Stream.of().forEach( o -> o.toString() ); // ok
+ }
+
+ void someMethod(String param) { // 2 violations
+ }
+}
diff --git a/src/xdocs/config_whitespace.xml b/src/xdocs/config_whitespace.xml
index 49513b772..f52e5ab69 100644
--- a/src/xdocs/config_whitespace.xml
+++ b/src/xdocs/config_whitespace.xml
@@ -1411,7 +1411,9 @@ import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
<a
href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#RESOURCE_SPECIFICATION">RESOURCE_SPECIFICATION</a>,
<a
- href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#SUPER_CTOR_CALL">SUPER_CTOR_CALL</a>.
+ href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#SUPER_CTOR_CALL">SUPER_CTOR_CALL</a>,
+ <a
+ href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LAMBDA">LAMBDA</a>.
</td>
<td>
@@ -1452,7 +1454,9 @@ import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
<a
href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#RESOURCE_SPECIFICATION">RESOURCE_SPECIFICATION</a>,
<a
- href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#SUPER_CTOR_CALL">SUPER_CTOR_CALL</a>.
+ href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#SUPER_CTOR_CALL">SUPER_CTOR_CALL</a>,
+ <a
+ href="apidocs/com/puppycrawl/tools/checkstyle/api/TokenTypes.html#LAMBDA">LAMBDA</a>.
</td>
</tr>
</table>