aboutsummaryrefslogtreecommitdiff
path: root/java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java')
-rw-r--r--java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java b/java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java
index 8d73f4774..cfd0bec6e 100644
--- a/java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java
+++ b/java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java
@@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableSet;
import com.squareup.javapoet.ClassName;
import dagger.internal.codegen.binding.AssistedInjectionAnnotations.AssistedParameter;
import dagger.internal.codegen.javapoet.TypeNames;
+import dagger.internal.codegen.validation.InjectValidator;
import dagger.internal.codegen.validation.ValidationReport;
import java.util.HashSet;
import java.util.Set;
@@ -34,10 +35,12 @@ import javax.inject.Inject;
/** An annotation processor for {@link dagger.assisted.AssistedInject}-annotated elements. */
final class AssistedInjectProcessingStep extends TypeCheckingProcessingStep<XConstructorElement> {
private final XMessager messager;
+ private final InjectValidator injectValidator;
@Inject
- AssistedInjectProcessingStep(XMessager messager) {
+ AssistedInjectProcessingStep(XMessager messager, InjectValidator injectValidator) {
this.messager = messager;
+ this.injectValidator = injectValidator;
}
@Override
@@ -48,7 +51,13 @@ final class AssistedInjectProcessingStep extends TypeCheckingProcessingStep<XCon
@Override
protected void process(
XConstructorElement assistedInjectElement, ImmutableSet<ClassName> annotations) {
- new AssistedInjectValidator().validate(assistedInjectElement).printMessagesTo(messager);
+ // The InjectValidator has already run and reported its errors in InjectProcessingStep, so no
+ // need to report its errors. However, the AssistedInjectValidator relies on the InjectValidator
+ // returning a clean report, so we check that first before running AssistedInjectValidator. This
+ // shouldn't be expensive since InjectValidator caches its results after validating.
+ if (injectValidator.validate(assistedInjectElement.getEnclosingElement()).isClean()) {
+ new AssistedInjectValidator().validate(assistedInjectElement).printMessagesTo(messager);
+ }
}
private final class AssistedInjectValidator {