aboutsummaryrefslogtreecommitdiff
path: root/value/src/test/java/com/google
diff options
context:
space:
mode:
authorÉamonn McManus <emcmanus@google.com>2021-04-12 11:06:35 -0700
committerGoogle Java Core Libraries <java-libraries-firehose+copybara@google.com>2021-04-12 11:07:09 -0700
commit27bc525531a1928fadef173ded1d0855a9c4ebe8 (patch)
treefc053108412d1d70c09685bbee647b6c67292239 /value/src/test/java/com/google
parent4cf9f07d778fe02e990bc98b3041d396c51fc2f9 (diff)
downloadauto-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.java33
-rw-r--r--value/src/test/java/com/google/auto/value/processor/TypeEncoderTest.java2
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());