From b90b416e7136b6e0ca9ff6e378c171a3acd3acae Mon Sep 17 00:00:00 2001 From: Wanying Ding Date: Mon, 28 Aug 2023 20:00:03 -0700 Subject: [PATCH] Don't run RootProcessingStep#postProcess if no root element was detected. RELNOTES=n/a PiperOrigin-RevId: 560887928 --- .../hilt/processor/internal/root/RootProcessingStep.java | 7 +++++++ 1 file changed, 7 insertions(+) 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; }