From b5ef01c04009fd5e1101267c013fc3a2013159ed Mon Sep 17 00:00:00 2001 From: Grant Oakley Date: Thu, 14 Oct 2021 14:44:56 -0700 Subject: [PATCH] Do not allow calls to earlySingletonComponent() if there are no @EarlyEntryPoints. Before this change, this method would not throw if shareTestComponent was enabled, regardless of whether there were any @EarlyEntryPoints. After this change, EarlySingletonComponentCreatorImpl is no longer generated unless there are aggregated @EarlyEntryPoints. The ability to reflect on this class is what determines whether an exception is thrown. RELNOTES=EarlyEntryPoints#get() will now throw if there are no @EarlyEntryPoint annotated interfaces. PiperOrigin-RevId: 403191264 --- .../processor/internal/root/ComponentTreeDepsProcessor.java | 5 +++-- .../processor/internal/root/ir/ComponentTreeDepsIrCreator.kt | 2 +- javatests/dagger/hilt/android/BUILD | 1 - 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/java/dagger/hilt/processor/internal/root/ComponentTreeDepsProcessor.java b/java/dagger/hilt/processor/internal/root/ComponentTreeDepsProcessor.java index a08df95a589..d2fb58dcbad 100644 --- a/java/dagger/hilt/processor/internal/root/ComponentTreeDepsProcessor.java +++ b/java/dagger/hilt/processor/internal/root/ComponentTreeDepsProcessor.java @@ -134,8 +134,9 @@ private void processComponentTreeDeps(ComponentTreeDepsMetadata metadata) throws generateComponents(metadata, rootMetadata, componentNames); - // Generate a creator for the early entry point if there is a default component available. - if (isDefaultRoot) { + // Generate a creator for the early entry point if there is a default component available + // and there are early entry points. + if (isDefaultRoot && !metadata.aggregatedEarlyEntryPointDeps().isEmpty()) { EarlySingletonComponentCreatorGenerator.generate(getProcessingEnv()); } diff --git a/java/dagger/hilt/processor/internal/root/ir/ComponentTreeDepsIrCreator.kt b/java/dagger/hilt/processor/internal/root/ir/ComponentTreeDepsIrCreator.kt index ad5f58b27f3..1a8c050764e 100644 --- a/java/dagger/hilt/processor/internal/root/ir/ComponentTreeDepsIrCreator.kt +++ b/java/dagger/hilt/processor/internal/root/ir/ComponentTreeDepsIrCreator.kt @@ -60,7 +60,7 @@ class ComponentTreeDepsIrCreator private constructor( return mutableSetOf().apply { aggregatedDepsByRoot.keys.forEach { root -> val isDefaultRoot = root == DEFAULT_ROOT_CLASS_NAME - val isEarlyEntryPointRoot = isDefaultRoot && rootsUsingSharedComponent.isEmpty() + val isEarlyEntryPointRoot = isDefaultRoot && aggregatedEarlyEntryPointDeps.isNotEmpty() // We want to base the generated name on the user written root rather than a generated root. val rootName = if (isDefaultRoot) { DEFAULT_ROOT_CLASS_NAME diff --git a/javatests/dagger/hilt/android/BUILD b/javatests/dagger/hilt/android/BUILD index c2d4980b250..f59b8b02018 100644 --- a/javatests/dagger/hilt/android/BUILD +++ b/javatests/dagger/hilt/android/BUILD @@ -170,7 +170,6 @@ android_local_test( name = "EarlyEntryPointNoEntryPointsDefinedTest", size = "small", srcs = ["EarlyEntryPointNoEntryPointsDefinedTest.java"], - javacopts = ["-Adagger.hilt.shareTestComponents=false"], # TODO(b/200821875): Remove explicit flag manifest_values = { "minSdkVersion": "14", },