Issue #3732: fix NPE for Java 8's 'receiver parameter'

This commit is contained in:
Markus Rathgeb 2017-01-16 17:08:42 +01:00 committed by Roman Ivanov
parent f91b1af3d7
commit 8e52504297
3 changed files with 41 additions and 1 deletions

View File

@ -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();
}

View File

@ -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);
}
}

View File

@ -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);
}
}