Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
import dagger.hilt.processor.internal.uninstallmodules.UninstallModulesProcessor;
import dagger.internal.codegen.ComponentProcessor;
import dagger.internal.codegen.KspComponentProcessor;
import dagger.spi.model.BindingGraphPlugin;
import dagger.testing.compile.CompilerTests;
import java.io.File;
import java.util.Arrays;
Expand All @@ -65,6 +66,7 @@
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import javax.annotation.processing.Processor;
import org.junit.rules.TemporaryFolder;

Expand Down Expand Up @@ -125,7 +127,8 @@ public static Compiler compiler(Processor... extraProcessors) {

public static Compiler compiler(Collection<? extends Processor> extraProcessors) {
return CompilerTests.compiler()
.withProcessors(CompilerTests.mergeProcessors(defaultProcessors(), extraProcessors));
.withProcessors(
CompilerTests.mergeProcessors(defaultProcessors(ImmutableList.of()), extraProcessors));
}

public static void compileWithKapt(
Expand Down Expand Up @@ -170,20 +173,21 @@ public static void compileWithKapt(
/* javacArguments= */ DEFAULT_JAVAC_OPTIONS,
/* kotlincArguments= */ DEFAULT_KOTLINC_OPTIONS,
/* kaptProcessors= */ ImmutableList.<Processor>builder()
.addAll(defaultProcessors())
.addAll(defaultProcessors(ImmutableList.of()))
.addAll(additionalProcessors)
.build(),
/* symbolProcessorProviders= */ ImmutableList.of(),
/* processorOptions= */ processorOptions));
onCompilationResult.accept(result);
}

static ImmutableList<Processor> defaultProcessors() {
private static ImmutableList<Processor> defaultProcessors(
ImmutableCollection<BindingGraphPlugin> bindingGraphPlugins) {
return ImmutableList.of(
new AggregatedDepsProcessor(),
new AliasOfProcessor(),
new AndroidEntryPointProcessor(),
new ComponentProcessor(),
ComponentProcessor.withTestPlugins(bindingGraphPlugins),
new ComponentTreeDepsProcessor(),
new CustomTestApplicationProcessor(),
new DefineComponentProcessor(),
Expand All @@ -194,13 +198,14 @@ static ImmutableList<Processor> defaultProcessors() {
new UninstallModulesProcessor());
}

private static ImmutableList<SymbolProcessorProvider> kspDefaultProcessors() {
private static ImmutableList<SymbolProcessorProvider> kspDefaultProcessors(
ImmutableCollection<BindingGraphPlugin> bindingGraphPlugins) {
// TODO(bcorso): Add the rest of the KSP processors here.
return ImmutableList.of(
new KspAggregatedDepsProcessor.Provider(),
new KspAliasOfProcessor.Provider(),
new KspAndroidEntryPointProcessor.Provider(),
new KspComponentProcessor.Provider(),
KspComponentProcessor.Provider.withTestPlugins(bindingGraphPlugins),
new KspComponentTreeDepsProcessor.Provider(),
new KspCustomTestApplicationProcessor.Provider(),
new KspDefineComponentProcessor.Provider(),
Expand All @@ -221,6 +226,7 @@ static Builder builder() {
.additionalJavacProcessors(ImmutableList.of())
.additionalKspProcessors(ImmutableList.of())
.processingSteps(ImmutableList.of())
.bindingGraphPluginSuppliers(ImmutableList.of())
.javacArguments(ImmutableList.of());
}

Expand All @@ -239,6 +245,14 @@ static Builder builder() {
/** Returns the extra KSP processors. */
abstract ImmutableCollection<SymbolProcessorProvider> additionalKspProcessors();

/** Returns the {@link BindingGraphPlugin} suppliers. */
abstract ImmutableCollection<Supplier<BindingGraphPlugin>> bindingGraphPluginSuppliers();

/** Returns the {@link BindingGraphPlugin}s. */
private ImmutableList<BindingGraphPlugin> bindingGraphPlugins() {
return bindingGraphPluginSuppliers().stream().map(Supplier::get).collect(toImmutableList());
}

/** Returns the command-line options */
abstract ImmutableCollection<String> javacArguments();

Expand All @@ -255,6 +269,10 @@ public HiltCompiler withProcessingSteps(
return toBuilder().processingSteps(ImmutableList.copyOf(mapping)).build();
}

public HiltCompiler withBindingGraphPlugins(Supplier<BindingGraphPlugin>... suppliers) {
return toBuilder().bindingGraphPluginSuppliers(ImmutableList.copyOf(suppliers)).build();
}

/** Returns a new {@link HiltCompiler} instance with the additional Javac processors. */
public HiltCompiler withAdditionalJavacProcessors(Processor... processors) {
return toBuilder().additionalJavacProcessors(ImmutableList.copyOf(processors)).build();
Expand Down Expand Up @@ -375,7 +393,9 @@ private ImmutableList<String> mergedJavacArguments() {

private ImmutableList<Processor> mergedJavacProcessors() {
return ImmutableList.<Processor>builder()
.addAll(CompilerTests.mergeProcessors(defaultProcessors(), additionalJavacProcessors()))
.addAll(
CompilerTests.mergeProcessors(
defaultProcessors(bindingGraphPlugins()), additionalJavacProcessors()))
.addAll(
processingSteps().stream()
.map(HiltCompilerProcessors.JavacProcessor::new)
Expand All @@ -385,7 +405,9 @@ private ImmutableList<Processor> mergedJavacProcessors() {

private ImmutableList<SymbolProcessorProvider> mergedKspProcessors() {
return ImmutableList.<SymbolProcessorProvider>builder()
.addAll(CompilerTests.mergeProcessors(kspDefaultProcessors(), additionalKspProcessors()))
.addAll(
CompilerTests.mergeProcessors(
kspDefaultProcessors(bindingGraphPlugins()), additionalKspProcessors()))
.addAll(
processingSteps().stream()
.map(HiltCompilerProcessors.KspProcessor.Provider::new)
Expand All @@ -407,6 +429,9 @@ abstract Builder additionalKspProcessors(
abstract Builder processingSteps(
ImmutableCollection<Function<XProcessingEnv, BaseProcessingStep>> processingSteps);

abstract Builder bindingGraphPluginSuppliers(
ImmutableCollection<Supplier<BindingGraphPlugin>> bindingGraphPluginSuppliers);

abstract HiltCompiler build();
}
}
Expand Down
4 changes: 4 additions & 0 deletions java/dagger/testing/compile/CompilerTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -401,8 +401,10 @@ abstract Builder additionalKspProcessors(

abstract Builder processingStepSuppliers(
ImmutableCollection<Supplier<XProcessingStep>> processingStepSuppliers);

abstract Builder bindingGraphPluginSuppliers(
ImmutableCollection<Supplier<BindingGraphPlugin>> bindingGraphPluginSuppliers);

abstract DaggerCompiler build();
}
}
Expand All @@ -416,6 +418,8 @@ abstract Builder bindingGraphPluginSuppliers(
*/
public static <T> ImmutableList<T> mergeProcessors(
Collection<? extends T> defaultProcessors, Collection<? extends T> extraProcessors) {
// TODO: b/545333255 - Add validation to prevent ComponentProcessor in extraProcessors once all
// users are migrated to the new bindingGraphPluginSuppliers API.
Map<Class<?>, T> processors =
defaultProcessors.stream()
.collect(toMap(Object::getClass, (T e) -> e, (p1, p2) -> p2, HashMap::new));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
package dagger.android.processor;

import androidx.room3.compiler.processing.util.Source;
import dagger.internal.codegen.ComponentProcessor;
import dagger.internal.codegen.KspComponentProcessor;
import dagger.testing.compile.CompilerTests;
import org.junit.Test;
import org.junit.runner.RunWith;
Expand Down Expand Up @@ -88,10 +86,7 @@ public void conflictingMapKeys() {
"}");

CompilerTests.daggerCompiler(activity, injectorFactory, module, component)
.withAdditionalJavacProcessors(
ComponentProcessor.withTestPlugins(new DuplicateAndroidInjectorsChecker()))
.withAdditionalKspProcessors(
KspComponentProcessor.Provider.withTestPlugins(new DuplicateAndroidInjectorsChecker()))
.withBindingGraphPlugins(DuplicateAndroidInjectorsChecker::new)
.compile(
subject -> {
subject.compilationDidFail();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ kt_compiler_test(
resources = glob(["goldens/ViewModelValidationPluginTest/**"]),
deps = [
":test_utils",
"//dagger-compiler:processor",
"//dagger-compiler:xprocessing",
"//dagger-compiler/main/java/dagger/internal/codegen/xprocessing:xprocessing-testing",
"//hilt-compiler/main/java/dagger/hilt/android/processor/internal/viewmodel:processor_lib",
Expand Down Expand Up @@ -87,7 +86,6 @@ kt_compiler_test(
resources = glob(["goldens/ViewModelValidationPluginWithAssistedInjectTest/**"]),
deps = [
":test_utils",
"//dagger-compiler:processor",
"//dagger-compiler:xprocessing",
"//dagger-compiler/main/java/dagger/internal/codegen/xprocessing:xprocessing-testing",
"//hilt-compiler/main/java/dagger/hilt/android/processor/internal/viewmodel:processor_lib",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ import androidx.room3.compiler.processing.ExperimentalProcessingApi
import androidx.room3.compiler.processing.util.Source
import com.google.common.collect.ImmutableList
import dagger.hilt.android.testing.compile.HiltCompilerTests
import dagger.internal.codegen.ComponentProcessor
import dagger.internal.codegen.KspComponentProcessor
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
Expand All @@ -32,14 +30,8 @@ class ViewModelValidationPluginTest {

private fun testCompiler(vararg sources: Source): HiltCompilerTests.HiltCompiler =
HiltCompilerTests.hiltCompiler(ImmutableList.copyOf(sources))
.withAdditionalJavacProcessors(
ComponentProcessor.withTestPlugins(ViewModelValidationPlugin()),
ViewModelProcessor()
)
.withAdditionalKspProcessors(
KspComponentProcessor.Provider.withTestPlugins(ViewModelValidationPlugin()),
KspViewModelProcessor.Provider()
)
.withBindingGraphPlugins(::ViewModelValidationPlugin)
.withProcessingSteps(::ViewModelProcessingStep)

private val hiltAndroidApp =
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ import androidx.room3.compiler.processing.util.Source
import com.google.common.collect.ImmutableList
import com.google.common.collect.ImmutableMap
import dagger.hilt.android.testing.compile.HiltCompilerTests
import dagger.internal.codegen.ComponentProcessor
import dagger.internal.codegen.KspComponentProcessor
import dagger.testing.compile.CompilerTests.*
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
Expand All @@ -34,14 +31,8 @@ class ViewModelValidationPluginWithAssistedInjectTest {

private fun testCompiler(vararg sources: Source): HiltCompilerTests.HiltCompiler =
HiltCompilerTests.hiltCompiler(ImmutableList.copyOf(sources))
.withAdditionalJavacProcessors(
ComponentProcessor.withTestPlugins(ViewModelValidationPlugin()),
ViewModelProcessor()
)
.withAdditionalKspProcessors(
KspComponentProcessor.Provider.withTestPlugins(ViewModelValidationPlugin()),
KspViewModelProcessor.Provider()
)
.withBindingGraphPlugins(::ViewModelValidationPlugin)
.withProcessingSteps(::ViewModelProcessingStep)
.withProcessorOptions(ImmutableMap.of("dagger.hilt.enableAssistedInjectViewModels", "true"))

private val hiltAndroidApp =
Expand Down
Loading