aboutsummaryrefslogtreecommitdiff
path: root/factory
diff options
context:
space:
mode:
authorcushon <cushon@google.com>2019-05-16 10:48:16 -0700
committerRon Shapiro <shapiro.rd@gmail.com>2019-05-27 12:17:56 -0400
commita8ecd1f0a7c1fa65f081d1f0847976ca5c2dcfb5 (patch)
tree52171bdac775db197b40d05316eb96a58a07077f /factory
parent6b9005c0fa68b45a3788878e1383f2f713062d4e (diff)
downloadauto-a8ecd1f0a7c1fa65f081d1f0847976ca5c2dcfb5.tar.gz
Don't compare TypeMirrors using Object#equals
They don't override Object#equals and are not interned, so reference equality is not useful. This was causing unnecessary duplication of Provider fields in AutoFactories. RELNOTES=n/a ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=248752047
Diffstat (limited to 'factory')
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java2
-rw-r--r--factory/src/main/java/com/google/auto/factory/processor/Key.java9
-rw-r--r--factory/src/test/resources/expected/CheckerFrameworkNullableFactory.java13
3 files changed, 12 insertions, 12 deletions
diff --git a/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java b/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java
index 03bd420d..5ceb82eb 100644
--- a/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java
+++ b/factory/src/main/java/com/google/auto/factory/processor/FactoryWriter.java
@@ -106,7 +106,7 @@ final class FactoryWriter {
Iterator<ProviderField> providerFields = descriptor.providers().values().iterator();
for (int argumentIndex = 1; providerFields.hasNext(); argumentIndex++) {
ProviderField provider = providerFields.next();
- TypeName typeName = TypeName.get(provider.key().type()).box();
+ TypeName typeName = TypeName.get(provider.key().type().get()).box();
TypeName providerType = ParameterizedTypeName.get(ClassName.get(Provider.class), typeName);
factory.addField(providerType, provider.name(), PRIVATE, FINAL);
if (provider.key().qualifier().isPresent()) {
diff --git a/factory/src/main/java/com/google/auto/factory/processor/Key.java b/factory/src/main/java/com/google/auto/factory/processor/Key.java
index e1c1c296..04bd4f37 100644
--- a/factory/src/main/java/com/google/auto/factory/processor/Key.java
+++ b/factory/src/main/java/com/google/auto/factory/processor/Key.java
@@ -38,9 +38,11 @@ import javax.lang.model.util.Types;
* @author Gregory Kick
*/
@AutoValue
+// TODO(ronshapiro): reuse dagger.model.Key?
abstract class Key {
- abstract TypeMirror type();
+ abstract Equivalence.Wrapper<TypeMirror> type();
+
abstract Optional<Equivalence.Wrapper<AnnotationMirror>> qualifierWrapper();
Optional<AnnotationMirror> qualifier() {
@@ -80,7 +82,8 @@ abstract class Key {
? MoreTypes.asDeclared(type).getTypeArguments().get(0)
: boxedType(type, types);
return new AutoValue_Key(
- keyType, wrapOptionalInEquivalence(AnnotationMirrors.equivalence(), qualifier));
+ MoreTypes.equivalence().wrap(keyType),
+ wrapOptionalInEquivalence(AnnotationMirrors.equivalence(), qualifier));
}
/**
@@ -95,7 +98,7 @@ abstract class Key {
@Override
public String toString() {
- String typeQualifiedName = MoreTypes.asTypeElement(type()).toString();
+ String typeQualifiedName = MoreTypes.asTypeElement(type().get()).toString();
return qualifier().isPresent()
? qualifier().get() + "/" + typeQualifiedName
: typeQualifiedName;
diff --git a/factory/src/test/resources/expected/CheckerFrameworkNullableFactory.java b/factory/src/test/resources/expected/CheckerFrameworkNullableFactory.java
index bea01e98..79175c7e 100644
--- a/factory/src/test/resources/expected/CheckerFrameworkNullableFactory.java
+++ b/factory/src/test/resources/expected/CheckerFrameworkNullableFactory.java
@@ -27,24 +27,21 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
)
final class CheckerFrameworkNullableFactory {
- private final Provider<String> providedNullableDeclProvider;
- private final Provider<String> providedNullableTypeProvider;
+ private final Provider<String> java_lang_StringProvider;
@Inject
CheckerFrameworkNullableFactory(
- Provider<String> providedNullableDeclProvider,
- Provider<String> providedNullableTypeProvider) {
- this.providedNullableDeclProvider = checkNotNull(providedNullableDeclProvider, 1);
- this.providedNullableTypeProvider = checkNotNull(providedNullableTypeProvider, 2);
+ Provider<String> java_lang_StringProvider) {
+ this.java_lang_StringProvider = checkNotNull(java_lang_StringProvider, 1);
}
CheckerFrameworkNullable create(
@NullableDecl String nullableDecl, @NullableType String nullableType) {
return new CheckerFrameworkNullable(
nullableDecl,
- providedNullableDeclProvider.get(),
+ java_lang_StringProvider.get(),
nullableType,
- providedNullableTypeProvider.get());
+ java_lang_StringProvider.get());
}
private static <T> T checkNotNull(T reference, int argumentIndex) {