diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java index dc16a39c4..d0537b47e 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java @@ -694,7 +694,9 @@ public class JavadocMethodCheck extends AbstractTypeAwareCheck { while (child != null) { if (child.getType() == TokenTypes.PARAMETER_DEF) { final DetailAST ident = child.findFirstToken(TokenTypes.IDENT); - returnValue.add(ident); + if (ident != null) { + returnValue.add(ident); + } } child = child.getNextSibling(); } diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java index 6a20e3b40..b6ed1185f 100644 --- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java +++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java @@ -591,4 +591,10 @@ public class JavadocMethodCheckTest extends BaseCheckTestSupport { }; verify(checkConfig, getPath("InputJavadocMethodsNotSkipWritten.java"), expected); } + + @Test + public void testJava8ReceiverParameter() throws Exception { + final String[] expected = CommonUtils.EMPTY_STRING_ARRAY; + verify(checkConfig, getPath("InputJavadocReceiverParameter.java"), expected); + } } diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputJavadocReceiverParameter.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputJavadocReceiverParameter.java new file mode 100644 index 000000000..0e4a14c8b --- /dev/null +++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/InputJavadocReceiverParameter.java @@ -0,0 +1,32 @@ +package com.puppycrawl.tools.checkstyle.checks.javadoc; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.nio.ByteBuffer; + +public class InputJavadocReceiverParameter { + + @Retention(RetentionPolicy.RUNTIME) + @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER}) + public @interface UnknownInitialization { + /** + * A dummy annotation to check Java 8's receiver parameter handling. + * + * @return a class + */ + Class value() default Object.class; + } + + /** + * Function to check handling of Java 8's receiver parameter. + * + * @param buffer dummy argument + */ + public void foo(@UnknownInitialization(InputJavadocReceiverParameter.class) InputJavadocReceiverParameter this, + final ByteBuffer buffer) { + buffer.putInt(1); + } + +}