Skip to content

Commit 33c7673

Browse files
bcorsoDagger Team
authored andcommitted
Remove checks for unused binding kinds in FactoryGenerator.
Factory generator can only be used with `INJECTION`, `ASSISTED_INJECTION`, and `PROVISION` kinds, so fail early if other kinds are detected. RELNOTES=N/A PiperOrigin-RevId: 642258494
1 parent 65b74f8 commit 33c7673

File tree

1 file changed

+10
-17
lines changed

1 file changed

+10
-17
lines changed

java/dagger/internal/codegen/writing/FactoryGenerator.java

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import androidx.room.compiler.processing.XProcessingEnv;
4747
import com.google.common.collect.ImmutableList;
4848
import com.google.common.collect.ImmutableMap;
49+
import com.google.common.collect.ImmutableSet;
4950
import com.google.common.collect.Lists;
5051
import com.squareup.javapoet.AnnotationSpec;
5152
import com.squareup.javapoet.ClassName;
@@ -80,6 +81,9 @@
8081
* Inject} constructors.
8182
*/
8283
public final class FactoryGenerator extends SourceFileGenerator<ProvisionBinding> {
84+
private static final ImmutableSet<BindingKind> VALID_BINDING_KINDS =
85+
ImmutableSet.of(BindingKind.INJECTION, BindingKind.ASSISTED_INJECTION, BindingKind.PROVISION);
86+
8387
private final CompilerOptions compilerOptions;
8488
private final SourceFiles sourceFiles;
8589

@@ -105,10 +109,7 @@ public ImmutableList<TypeSpec.Builder> topLevelTypes(ProvisionBinding binding) {
105109
// We don't want to write out resolved bindings -- we want to write out the generic version.
106110
checkArgument(!binding.unresolved().isPresent());
107111
checkArgument(binding.bindingElement().isPresent());
108-
109-
if (binding.kind() == BindingKind.DELEGATE) {
110-
return ImmutableList.of();
111-
}
112+
checkArgument(VALID_BINDING_KINDS.contains(binding.kind()));
112113

113114
return ImmutableList.of(factoryBuilder(binding));
114115
}
@@ -117,14 +118,9 @@ private TypeSpec.Builder factoryBuilder(ProvisionBinding binding) {
117118
TypeSpec.Builder factoryBuilder =
118119
classBuilder(generatedClassNameForBinding(binding))
119120
.addModifiers(PUBLIC, FINAL)
120-
.addTypeVariables(bindingTypeElementTypeVariableNames(binding));
121-
122-
if (binding.kind() == BindingKind.INJECTION
123-
|| binding.kind() == BindingKind.ASSISTED_INJECTION
124-
|| binding.kind() == BindingKind.PROVISION) {
125-
factoryBuilder.addAnnotation(scopeMetadataAnnotation(binding));
126-
factoryBuilder.addAnnotation(qualifierMetadataAnnotation(binding));
127-
}
121+
.addTypeVariables(bindingTypeElementTypeVariableNames(binding))
122+
.addAnnotation(scopeMetadataAnnotation(binding))
123+
.addAnnotation(qualifierMetadataAnnotation(binding));
128124

129125
factoryTypeName(binding).ifPresent(factoryBuilder::addSuperinterface);
130126
addConstructorAndFields(binding, factoryBuilder);
@@ -341,20 +337,17 @@ private enum FactoryCreationStrategy {
341337

342338
static FactoryCreationStrategy of(Binding binding) {
343339
switch (binding.kind()) {
344-
case DELEGATE:
345-
throw new AssertionError("Delegate bindings don't have a factory.");
346340
case PROVISION:
347341
return binding.dependencies().isEmpty() && !binding.requiresModuleInstance()
348342
? SINGLETON_INSTANCE
349343
: CLASS_CONSTRUCTOR;
350344
case INJECTION:
351-
case MULTIBOUND_SET:
352-
case MULTIBOUND_MAP:
345+
case ASSISTED_INJECTION:
353346
return binding.dependencies().isEmpty()
354347
? SINGLETON_INSTANCE
355348
: CLASS_CONSTRUCTOR;
356349
default:
357-
return CLASS_CONSTRUCTOR;
350+
throw new AssertionError("Unexpected binding kind: " + binding.kind());
358351
}
359352
}
360353
}

0 commit comments

Comments
 (0)