Don't reuse the same method name from a previously generated modifiable binding method.
RELNOTES=n/a
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=224501727
diff --git a/java/dagger/internal/codegen/ComponentImplementation.java b/java/dagger/internal/codegen/ComponentImplementation.java
index d7e9133..8c84ee3 100644
--- a/java/dagger/internal/codegen/ComponentImplementation.java
+++ b/java/dagger/internal/codegen/ComponentImplementation.java
@@ -521,6 +521,18 @@
}
/**
+ * Returns the names of every modifiable binding method of this implementation and any superclass
+ * implementations.
+ */
+ ImmutableSet<String> getAllModifiableBindingMethodNames() {
+ ImmutableSet.Builder<String> names = ImmutableSet.builder();
+ modifiableBindingMethods.allMethods().forEach(method -> names.add(method.methodSpec().name));
+ superclassImplementation.ifPresent(
+ superclass -> names.addAll(superclass.getAllModifiableBindingMethodNames()));
+ return names.build();
+ }
+
+ /**
* Returns the {@link ModifiableBindingMethod} for this subcomponent for the given binding, if it
* exists.
*/
diff --git a/java/dagger/internal/codegen/ComponentImplementationFactory.java b/java/dagger/internal/codegen/ComponentImplementationFactory.java
index ca98509..381d7ec 100644
--- a/java/dagger/internal/codegen/ComponentImplementationFactory.java
+++ b/java/dagger/internal/codegen/ComponentImplementationFactory.java
@@ -198,6 +198,14 @@
getLocalAndInheritedMethods(graph.componentTypeElement(), types, elements)
.forEach(method -> componentImplementation.claimMethodName(method.getSimpleName()));
+ componentImplementation
+ .superclassImplementation()
+ .ifPresent(
+ superclassImplementation -> {
+ superclassImplementation
+ .getAllModifiableBindingMethodNames()
+ .forEach(componentImplementation::claimMethodName);
+ });
addFactoryMethods();
addInterfaceMethods();
diff --git a/java/dagger/internal/codegen/ModifiableBindingMethods.java b/java/dagger/internal/codegen/ModifiableBindingMethods.java
index 6183ae4..e19abb9 100644
--- a/java/dagger/internal/codegen/ModifiableBindingMethods.java
+++ b/java/dagger/internal/codegen/ModifiableBindingMethods.java
@@ -70,6 +70,11 @@
return Optional.ofNullable(methods.get(request));
}
+ /** Returns all of the {@link ModifiableBindingMethod}s. */
+ ImmutableList<ModifiableBindingMethod> allMethods() {
+ return ImmutableList.copyOf(methods.values());
+ }
+
/**
* Mark the {@link ModifiableBindingMethod} as having been implemented, thus modifying the
* binding.