diff options
author | Éamonn McManus <emcmanus@google.com> | 2021-04-12 11:06:35 -0700 |
---|---|---|
committer | Google Java Core Libraries <java-libraries-firehose+copybara@google.com> | 2021-04-12 11:07:09 -0700 |
commit | 27bc525531a1928fadef173ded1d0855a9c4ebe8 (patch) | |
tree | fc053108412d1d70c09685bbee647b6c67292239 /value/src/test/java/com/google | |
parent | 4cf9f07d778fe02e990bc98b3041d396c51fc2f9 (diff) | |
download | auto-27bc525531a1928fadef173ded1d0855a9c4ebe8.tar.gz |
Add support for generics to AutoBuilder.
RELNOTES=n/a
PiperOrigin-RevId: 368041526
Diffstat (limited to 'value/src/test/java/com/google')
-rw-r--r-- | value/src/test/java/com/google/auto/value/processor/AutoBuilderCompilationTest.java | 33 | ||||
-rw-r--r-- | value/src/test/java/com/google/auto/value/processor/TypeEncoderTest.java | 2 |
2 files changed, 34 insertions, 1 deletions
diff --git a/value/src/test/java/com/google/auto/value/processor/AutoBuilderCompilationTest.java b/value/src/test/java/com/google/auto/value/processor/AutoBuilderCompilationTest.java index 7923c3e0..ce83b226 100644 --- a/value/src/test/java/com/google/auto/value/processor/AutoBuilderCompilationTest.java +++ b/value/src/test/java/com/google/auto/value/processor/AutoBuilderCompilationTest.java @@ -795,4 +795,37 @@ public final class AutoBuilderCompilationTest { .inFile(javaFileObject) .onLineContaining("maybe(int x)"); } + + @Test + public void typeParamMismatch() { + JavaFileObject javaFileObject = + JavaFileObjects.forSourceLines( + "foo.bar.Baz", + "package foo.bar;", + "", + "import com.google.auto.value.AutoBuilder;", + "import java.util.Optional;", + "", + "class Baz<T> {", + " Baz(T param) {}", + "", + " @AutoBuilder", + " interface Builder<E> {", + " abstract Builder<E> param(E param);", + " abstract Baz<E> build();", + " }", + "}"); + Compilation compilation = + javac() + .withProcessors(new AutoBuilderProcessor()) + .withOptions("-Acom.google.auto.value.AutoBuilderIsUnstable") + .compile(javaFileObject); + assertThat(compilation).failed(); + assertThat(compilation) + .hadErrorContaining( + "[AutoBuilderTypeParams] Builder type parameters <E> must match type parameters <T> of" + + " Baz(T param)") + .inFile(javaFileObject) + .onLineContaining("interface Builder<E>"); + } } diff --git a/value/src/test/java/com/google/auto/value/processor/TypeEncoderTest.java b/value/src/test/java/com/google/auto/value/processor/TypeEncoderTest.java index c31f711e..095865e4 100644 --- a/value/src/test/java/com/google/auto/value/processor/TypeEncoderTest.java +++ b/value/src/test/java/com/google/auto/value/processor/TypeEncoderTest.java @@ -292,7 +292,7 @@ public class TypeEncoderTest { TypeMirror multipleBoundsMirror = multipleBoundsElement.asType(); String text = "`import`\n"; text += "{" + TypeEncoder.encode(multipleBoundsMirror) + "}"; - text += "{" + TypeEncoder.formalTypeParametersString(multipleBoundsElement) + "}"; + text += "{" + TypeEncoder.typeParametersString(multipleBoundsElement.getTypeParameters()) + "}"; String myPackage = getClass().getPackage().getName(); String decoded = TypeEncoder.decode(text, elementUtils, typeUtils, myPackage, baseWithoutContainedTypes()); |