diff options
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(); |