diff --git a/hilt-compiler/main/java/dagger/hilt/processor/internal/root/RootProcessingStep.java b/hilt-compiler/main/java/dagger/hilt/processor/internal/root/RootProcessingStep.java index 6b5ce594fbd..1548bf56e95 100644 --- a/hilt-compiler/main/java/dagger/hilt/processor/internal/root/RootProcessingStep.java +++ b/hilt-compiler/main/java/dagger/hilt/processor/internal/root/RootProcessingStep.java @@ -24,15 +24,19 @@ import static dagger.internal.codegen.extension.DaggerStreams.toImmutableSet; import static java.util.Arrays.stream; +import androidx.room3.compiler.processing.XAnnotation; +import androidx.room3.compiler.processing.XAnnotationValue; import androidx.room3.compiler.processing.XElement; import androidx.room3.compiler.processing.XFiler.Mode; import androidx.room3.compiler.processing.XProcessingEnv; import androidx.room3.compiler.processing.XRoundEnv; import androidx.room3.compiler.processing.XTypeElement; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.squareup.javapoet.ClassName; import dagger.hilt.processor.internal.BadInputException; import dagger.hilt.processor.internal.BaseProcessingStep; +import dagger.hilt.processor.internal.ClassNames; import dagger.hilt.processor.internal.aggregateddeps.AggregatedDepsMetadata; import dagger.hilt.processor.internal.aliasof.AliasOfPropagatedDataMetadata; import dagger.hilt.processor.internal.definecomponent.DefineComponentClassesMetadata; @@ -51,6 +55,7 @@ import dagger.hilt.processor.internal.root.ir.ProcessedRootSentinelIr; import dagger.hilt.processor.internal.uninstallmodules.AggregatedUninstallModulesMetadata; import dagger.internal.codegen.xprocessing.XElements; +import java.util.Optional; import java.util.Set; /** Processor that outputs dagger components based on transitive build deps. */ @@ -138,6 +143,20 @@ protected void postProcess(XProcessingEnv env, XRoundEnv roundEnv) throws Except } } + private static Optional getMultiprocessPackageName(XTypeElement rootElement) { + XAnnotation multiprocessAnnotation = rootElement.getAnnotation(ClassNames.MULTIPROCESS); + Preconditions.checkState( + multiprocessAnnotation != null, + "Root element %s does not have a @Multiprocess annotation.", + rootElement.getQualifiedName()); + XAnnotationValue packageName = multiprocessAnnotation.get("packageName"); + String packageNameString = packageName.asString(); + if (packageNameString.isEmpty()) { + return Optional.empty(); + } + return Optional.of(packageNameString); + } + private ImmutableSet rootsToProcess() { ImmutableSet processedRoots = ProcessedRootSentinelMetadata.from(processingEnv()).stream()