Support externally-compiled transient property recognition in KSP (#1416)

This commit is contained in:
Zac Sweers
2021-11-03 15:49:28 -04:00
committed by GitHub
parent 92add003fe
commit 48e6dd3f03
4 changed files with 37 additions and 25 deletions

View File

@@ -39,6 +39,7 @@ import com.squareup.kotlinpoet.KModifier
import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
import com.squareup.kotlinpoet.PropertySpec
import com.squareup.kotlinpoet.TypeName
import com.squareup.kotlinpoet.jvm.transient
import com.squareup.kotlinpoet.ksp.TypeParameterResolver
import com.squareup.kotlinpoet.ksp.toClassName
import com.squareup.kotlinpoet.ksp.toKModifier
@@ -258,8 +259,12 @@ private fun KSPropertyDeclaration.toPropertySpec(
.mutable(isMutable)
.addModifiers(modifiers.map { KModifier.valueOf(it.name) })
.apply {
if (isAnnotationPresent(Transient::class)) {
addAnnotation(Transient::class)
// Check modifiers and annotation since annotation is source-only
// Note that this won't work properly until https://github.com/google/ksp/issues/710 is fixed
val isTransient = Modifier.JAVA_TRANSIENT in this@toPropertySpec.modifiers ||
isAnnotationPresent(Transient::class)
if (isTransient) {
transient()
}
addAnnotations(
this@toPropertySpec.annotations