Skip to content

Commit 1040be4

Browse files
author
Simon Bergeron
committed
update code to support ksp 2
1 parent 31a44a7 commit 1040be4

4 files changed

Lines changed: 10 additions & 10 deletions

File tree

dbflow-processor/src/main/java/com/raizlabs/android/dbflow/processor/definition/NotifyDefinition.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,11 @@ class NotifyDefinition(typeElement: Element, processorManager: ProcessorManager)
113113
if (!first) paramsBuilder.append(", ")
114114
first = false
115115
val resolvedType = param.type.resolve()
116+
if (resolvedType.isError) continue
116117
val isArray = resolvedType.declaration.qualifiedName?.asString() == "kotlin.Array"
117118
val elementQName = if (isArray) {
118-
resolvedType.arguments.firstOrNull()?.type?.resolve()
119-
?.declaration?.qualifiedName?.asString() ?: ""
119+
val inner = resolvedType.arguments.firstOrNull()?.type?.resolve()
120+
if (inner != null && !inner.isError) inner.declaration.qualifiedName?.asString() ?: "" else ""
120121
} else {
121122
resolvedType.declaration.qualifiedName?.asString() ?: ""
122123
}
@@ -133,7 +134,7 @@ class NotifyDefinition(typeElement: Element, processorManager: ProcessorManager)
133134

134135
// Determine return type: Uri[] or Uri
135136
val returnType = fn.returnType?.resolve()
136-
val returnDecl = returnType?.declaration?.qualifiedName?.asString() ?: ""
137+
val returnDecl = if (returnType != null && !returnType.isError) returnType.declaration.qualifiedName?.asString() ?: "" else ""
137138
when {
138139
returnDecl == "kotlin.Array" -> def.returnsArray = true
139140
returnDecl == "android.net.Uri" -> def.returnsSingle = true

dbflow-processor/src/main/java/com/raizlabs/android/dbflow/processor/definition/column/ColumnDefinition.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.raizlabs.android.dbflow.processor.definition.BaseTableDefinition
2020
import com.raizlabs.android.dbflow.processor.definition.TableDefinition
2121
import com.raizlabs.android.dbflow.processor.definition.TypeConverterDefinition
2222
import com.raizlabs.android.dbflow.processor.utils.annotation
23+
import com.raizlabs.android.dbflow.processor.utils.findAnnotationByName
2324
import com.raizlabs.android.dbflow.processor.utils.findKspAnnotation
2425
import com.raizlabs.android.dbflow.processor.utils.fromTypeMirror
2526
import com.raizlabs.android.dbflow.processor.utils.getBooleanArgument
@@ -361,9 +362,7 @@ constructor(processorManager: ProcessorManager, element: Element,
361362
// - Kotlin properties: need @JvmField for direct access; otherwise use getter/setter.
362363
val isPrivate = com.google.devtools.ksp.symbol.Modifier.PRIVATE in property.modifiers
363364
val isKotlinOrigin = property.origin == Origin.KOTLIN || property.origin == Origin.KOTLIN_LIB
364-
val hasJvmField = property.annotations.any {
365-
it.annotationType.resolve().declaration.qualifiedName?.asString() == "kotlin.jvm.JvmField"
366-
}
365+
val hasJvmField = property.findAnnotationByName("kotlin.jvm.JvmField") != null
367366
val useDirectAccess = if (!isKotlinOrigin) !isPrivate else (!isPrivate && hasJvmField)
368367
if (!useDirectAccess) {
369368
val isBoolean = elementTypeName?.box() == TypeName.BOOLEAN.box()

dbflow-processor/src/main/java/com/raizlabs/android/dbflow/processor/definition/column/ReferenceColumnDefinition.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.raizlabs.android.dbflow.processor.definition.TableDefinition
1818
import com.google.devtools.ksp.getAllSuperTypes
1919
import com.google.devtools.ksp.symbol.Origin
2020
import com.raizlabs.android.dbflow.processor.utils.annotation
21+
import com.raizlabs.android.dbflow.processor.utils.findAnnotationByName
2122
import com.raizlabs.android.dbflow.processor.utils.findKspAnnotation
2223
import com.raizlabs.android.dbflow.processor.utils.fromTypeMirror
2324
import com.raizlabs.android.dbflow.processor.utils.getBooleanArgument
@@ -458,9 +459,7 @@ class ReferenceColumnDefinition(manager: ProcessorManager, tableDefinition: Base
458459
// Accessor for the FK field itself (e.g. model.author)
459460
val isPrivate = com.google.devtools.ksp.symbol.Modifier.PRIVATE in property.modifiers
460461
val isKotlinOrigin = property.origin == Origin.KOTLIN || property.origin == Origin.KOTLIN_LIB
461-
val hasJvmField = property.annotations.any {
462-
it.annotationType.resolve().declaration.qualifiedName?.asString() == "kotlin.jvm.JvmField"
463-
}
462+
val hasJvmField = property.findAnnotationByName("kotlin.jvm.JvmField") != null
464463
val useDirectAccess = if (!isKotlinOrigin) !isPrivate else (!isPrivate && hasJvmField)
465464
columnAccessor = if (!useDirectAccess) {
466465
PrivateScopeColumnAccessor(elementName, object : GetterSetter {

dbflow-processor/src/main/java/com/raizlabs/android/dbflow/processor/utils/KspExtensions.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ fun KSType.toJavaPoetTypeName(): TypeName {
9595

9696
fun KSAnnotated.findAnnotationByName(qualifiedName: String): KSAnnotation? =
9797
annotations.find {
98-
it.annotationType.resolve().declaration.qualifiedName?.asString() == qualifiedName
98+
val resolved = it.annotationType.resolve()
99+
!resolved.isError && resolved.declaration.qualifiedName?.asString() == qualifiedName
99100
}
100101

101102
inline fun <reified T : Annotation> KSAnnotated.findKspAnnotation(): KSAnnotation? =

0 commit comments

Comments
 (0)