diff options
author | Daniel Santiago <danyboricua91@gmail.com> | 2020-04-20 08:53:48 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-20 11:53:48 -0400 |
commit | 622e07eb0859fcf0eb9537ea5657277b7f3b18af (patch) | |
tree | 1ccb01b6c239623cc8f1e9d7714c96fab19be722 /src/test/java/com/squareup/javapoet/MethodSpecTest.java | |
parent | 44622704248975ca398b90b4385005fdddeb35f9 (diff) | |
download | javapoet-622e07eb0859fcf0eb9537ea5657277b7f3b18af.tar.gz |
Don't copy parameter annotations when creating a ParameterSpec. (#770)
* Don't copy parameter annotations when creating a ParameterSpec.
This further preserves the behaviour discussed in https://github.com/square/javapoet/issues/482.
Unifying it for both MethodSpec.overriding and ParameterSpec.get.
* Add compilation test for when overriding a method with private annotations.
* Address PR comments:
* Remove unused import
* Rename newly added test
Diffstat (limited to 'src/test/java/com/squareup/javapoet/MethodSpecTest.java')
-rw-r--r-- | src/test/java/com/squareup/javapoet/MethodSpecTest.java | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/java/com/squareup/javapoet/MethodSpecTest.java b/src/test/java/com/squareup/javapoet/MethodSpecTest.java index b768351..824f476 100644 --- a/src/test/java/com/squareup/javapoet/MethodSpecTest.java +++ b/src/test/java/com/squareup/javapoet/MethodSpecTest.java @@ -15,6 +15,7 @@ */ package com.squareup.javapoet; +import com.google.testing.compile.Compilation; import com.google.testing.compile.CompilationRule; import java.io.Closeable; import java.io.IOException; @@ -30,14 +31,19 @@ import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Modifier; import javax.lang.model.element.TypeElement; import javax.lang.model.type.DeclaredType; +import javax.lang.model.util.ElementFilter; import javax.lang.model.util.Elements; import javax.lang.model.util.Types; +import javax.tools.JavaFileObject; + +import com.google.testing.compile.CompilationSubject; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import static com.google.common.collect.Iterables.getOnlyElement; import static com.google.common.truth.Truth.assertThat; +import static com.google.testing.compile.Compiler.javac; import static com.squareup.javapoet.MethodSpec.CONSTRUCTOR; import static com.squareup.javapoet.TestUtil.findFirst; import static javax.lang.model.util.ElementFilter.methodsIn; @@ -247,6 +253,26 @@ public final class MethodSpecTest { } } + abstract static class AbstractClassWithPrivateAnnotation { + + private @interface PrivateAnnotation{ } + + abstract void foo(@PrivateAnnotation final String bar); + } + + @Test public void overrideDoesNotCopyParameterAnnotations() { + TypeElement abstractTypeElement = getElement(AbstractClassWithPrivateAnnotation.class); + ExecutableElement fooElement = ElementFilter.methodsIn(abstractTypeElement.getEnclosedElements()).get(0); + ClassName implClassName = ClassName.get("com.squareup.javapoet", "Impl"); + TypeSpec type = TypeSpec.classBuilder(implClassName) + .superclass(abstractTypeElement.asType()) + .addMethod(MethodSpec.overriding(fooElement).build()) + .build(); + JavaFileObject jfo = JavaFile.builder(implClassName.packageName, type).build().toJavaFileObject(); + Compilation compilation = javac().compile(jfo); + CompilationSubject.assertThat(compilation).succeeded(); + } + @Test public void equalsAndHashCode() { MethodSpec a = MethodSpec.constructorBuilder().build(); MethodSpec b = MethodSpec.constructorBuilder().build(); |