Inline requests for bindings that were provided with a @BindInstance method, and enable SimpleMethodRequestFulfillment to operate on instance @Provides methods
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=166206675
diff --git a/java/dagger/internal/codegen/InjectionMethods.java b/java/dagger/internal/codegen/InjectionMethods.java
index d2ebf4e..6eff4dd 100644
--- a/java/dagger/internal/codegen/InjectionMethods.java
+++ b/java/dagger/internal/codegen/InjectionMethods.java
@@ -25,11 +25,11 @@
import static dagger.internal.codegen.Accessibility.isTypeAccessibleFrom;
import static dagger.internal.codegen.CodeBlocks.makeParametersCodeBlock;
import static dagger.internal.codegen.CodeBlocks.toConcatenatedCodeBlock;
-import static dagger.internal.codegen.CodeBlocks.toParametersCodeBlock;
import static dagger.internal.codegen.ConfigurationAnnotations.getNullableType;
import static dagger.internal.codegen.SourceFiles.generatedClassNameForBinding;
import static dagger.internal.codegen.SourceFiles.membersInjectorNameForType;
import static dagger.internal.codegen.TypeNames.rawTypeName;
+import static dagger.internal.codegen.Util.toImmutableList;
import static java.util.stream.Collectors.toList;
import static javax.lang.model.element.Modifier.PUBLIC;
import static javax.lang.model.element.Modifier.STATIC;
@@ -136,13 +136,16 @@
static CodeBlock invoke(
ProvisionBinding binding,
Function<DependencyRequest, CodeBlock> dependencyUsage,
- ClassName requestingClass) {
+ ClassName requestingClass,
+ Optional<CodeBlock> moduleReference) {
+ ImmutableList.Builder<CodeBlock> arguments = ImmutableList.builder();
+ moduleReference.ifPresent(arguments::add);
+ arguments.addAll(
+ injectionMethodArguments(
+ binding.provisionDependencies(), dependencyUsage, requestingClass));
return callInjectionMethod(
create(binding).get().name,
- // TODO(dpb): would this be simpler if injectionMethodArguments returned a List?
- ImmutableList.of(
- injectionMethodArguments(
- binding.provisionDependencies(), dependencyUsage, requestingClass)),
+ arguments.build(),
generatedClassNameForBinding(binding),
requestingClass);
}
@@ -336,13 +339,13 @@
* @param dependencyUsage function to apply on each of {@code dependencies} before casting
* @param requestingClass the class calling the injection method
*/
- private static CodeBlock injectionMethodArguments(
+ private static ImmutableList<CodeBlock> injectionMethodArguments(
ImmutableSet<DependencyRequest> dependencies,
Function<DependencyRequest, CodeBlock> dependencyUsage,
ClassName requestingClass) {
return dependencies.stream()
.map(dep -> injectionMethodArgument(dep, dependencyUsage.apply(dep), requestingClass))
- .collect(toParametersCodeBlock());
+ .collect(toImmutableList());
}
private static CodeBlock injectionMethodArgument(