diff --git a/java/dagger/hilt/processor/internal/root/RootProcessingStep.java b/java/dagger/hilt/processor/internal/root/RootProcessingStep.java index f281995d9cc..59c64af7f01 100644 --- a/java/dagger/hilt/processor/internal/root/RootProcessingStep.java +++ b/java/dagger/hilt/processor/internal/root/RootProcessingStep.java @@ -57,6 +57,9 @@ public final class RootProcessingStep extends BaseProcessingStep { private boolean processed; + // TODO(b/297889547) do not run preProcess and postProcess if supported annotation isn't present + // in the environment. + private boolean hasElementsToProcess = false; private GeneratesRootInputs generatesRootInputs; public RootProcessingStep(XProcessingEnv env) { @@ -75,6 +78,7 @@ protected ImmutableSet annotationClassNames() { @Override public void processEach(ClassName annotation, XElement element) throws Exception { + hasElementsToProcess = true; XTypeElement rootElement = XElements.asTypeElement(element); // TODO(bcorso): Move this logic into a separate isolating processor to avoid regenerating it // for unrelated changes in Gradle. @@ -93,6 +97,9 @@ rootElement, originatingRootElement, processingEnv().requireTypeElement(annotati @Override protected void postProcess(XProcessingEnv env, XRoundEnv roundEnv) throws Exception { + if (!hasElementsToProcess) { + return; + } if (!useAggregatingRootProcessor(processingEnv())) { return; }