diff options
Diffstat (limited to 'java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java')
-rw-r--r-- | java/dagger/internal/codegen/processingstep/AssistedInjectProcessingStep.java | 13 |
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 { |