diff options
author | cushon <cushon@google.com> | 2019-05-16 10:48:16 -0700 |
---|---|---|
committer | Ron Shapiro <shapiro.rd@gmail.com> | 2019-05-27 12:17:56 -0400 |
commit | a8ecd1f0a7c1fa65f081d1f0847976ca5c2dcfb5 (patch) | |
tree | 52171bdac775db197b40d05316eb96a58a07077f /factory | |
parent | 6b9005c0fa68b45a3788878e1383f2f713062d4e (diff) | |
download | auto-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')
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) { |