Try following KSP incremental best practices on anvilcodegen (#5205)

The KotlinPoet docs suggest using the added flow for declaring dependencies.

Make the dependencies of the generated files isolating instead of aggregating.
This commit is contained in:
Jorge Martin Espinosa 2025-08-22 12:30:02 +02:00 committed by GitHub
parent 2f2e886e9f
commit 8986b25c09

View file

@ -28,6 +28,7 @@ import com.squareup.kotlinpoet.KModifier
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
import com.squareup.kotlinpoet.STAR import com.squareup.kotlinpoet.STAR
import com.squareup.kotlinpoet.TypeSpec import com.squareup.kotlinpoet.TypeSpec
import com.squareup.kotlinpoet.ksp.addOriginatingKSFile
import com.squareup.kotlinpoet.ksp.toTypeName import com.squareup.kotlinpoet.ksp.toTypeName
import com.squareup.kotlinpoet.ksp.writeTo import com.squareup.kotlinpoet.ksp.writeTo
import dagger.Binds import dagger.Binds
@ -78,6 +79,7 @@ class ContributesNodeProcessor(
) )
.addType( .addType(
TypeSpec.classBuilder(moduleClassName) TypeSpec.classBuilder(moduleClassName)
.addOriginatingKSFile(ksClass.containingFile!!)
.addModifiers(KModifier.ABSTRACT) .addModifiers(KModifier.ABSTRACT)
.addAnnotation(Module::class) .addAnnotation(Module::class)
.addAnnotation(AnnotationSpec.builder(ContributesTo::class).addMember("%T::class", scope.toTypeName()).build()) .addAnnotation(AnnotationSpec.builder(ContributesTo::class).addMember("%T::class", scope.toTypeName()).build())
@ -102,10 +104,7 @@ class ContributesNodeProcessor(
content.writeTo( content.writeTo(
codeGenerator = codeGenerator, codeGenerator = codeGenerator,
dependencies = Dependencies( dependencies = Dependencies(aggregating = false),
aggregating = true,
ksClass.containingFile!!
),
) )
} }
@ -139,6 +138,7 @@ class ContributesNodeProcessor(
val content = FileSpec.builder(generatedPackage, assistedFactoryClassName) val content = FileSpec.builder(generatedPackage, assistedFactoryClassName)
.addType( .addType(
TypeSpec.interfaceBuilder(assistedFactoryClassName) TypeSpec.interfaceBuilder(assistedFactoryClassName)
.addOriginatingKSFile(ksClass.containingFile!!)
.addSuperinterface(ClassName.bestGuess(assistedNodeFactoryFqName.asString()).parameterizedBy(nodeClassName)) .addSuperinterface(ClassName.bestGuess(assistedNodeFactoryFqName.asString()).parameterizedBy(nodeClassName))
.addAnnotation(AssistedFactory::class) .addAnnotation(AssistedFactory::class)
.addFunction( .addFunction(
@ -155,10 +155,7 @@ class ContributesNodeProcessor(
content.writeTo( content.writeTo(
codeGenerator = codeGenerator, codeGenerator = codeGenerator,
dependencies = Dependencies( dependencies = Dependencies(aggregating = false),
aggregating = true,
ksClass.containingFile!!
),
) )
} }