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 8245ad8bc3
commit 64164abb2d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

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