From ed0c929f2f11bd84a7f08b46d6cf1832d9d83d0e Mon Sep 17 00:00:00 2001 From: seiko Date: Fri, 25 Aug 2023 17:56:58 +0800 Subject: [PATCH 1/2] fix annotation value array type on native/js target --- api/src/main/kotlin/com/google/devtools/ksp/utils.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/src/main/kotlin/com/google/devtools/ksp/utils.kt b/api/src/main/kotlin/com/google/devtools/ksp/utils.kt index 7453c04cd0..e3d38fa977 100644 --- a/api/src/main/kotlin/com/google/devtools/ksp/utils.kt +++ b/api/src/main/kotlin/com/google/devtools/ksp/utils.kt @@ -378,7 +378,8 @@ private fun KSAnnotation.createInvocationHandler(clazz: Class<*>): InvocationHan val value = { result.asArray(method, clazz) } cache.getOrPut(Pair(method.returnType, value), value) } else { - throw IllegalStateException("unhandled value type, $ExceptionMessage") + val value = { result } + cache.getOrPut(Pair(method.returnType, value), value) } } method.returnType.isEnum -> { From c05d96d75d087b1a35bc75ee40d6b97b5622a951 Mon Sep 17 00:00:00 2001 From: seiko Date: Fri, 8 Sep 2023 12:11:55 +0800 Subject: [PATCH 2/2] cache array result if result type is same with method return type --- api/src/main/kotlin/com/google/devtools/ksp/utils.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/api/src/main/kotlin/com/google/devtools/ksp/utils.kt b/api/src/main/kotlin/com/google/devtools/ksp/utils.kt index e3d38fa977..5e504f3817 100644 --- a/api/src/main/kotlin/com/google/devtools/ksp/utils.kt +++ b/api/src/main/kotlin/com/google/devtools/ksp/utils.kt @@ -377,9 +377,11 @@ private fun KSAnnotation.createInvocationHandler(clazz: Class<*>): InvocationHan if (result !is Array<*>) { val value = { result.asArray(method, clazz) } cache.getOrPut(Pair(method.returnType, value), value) - } else { + } else if (method.returnType == result::class.java) { val value = { result } cache.getOrPut(Pair(method.returnType, value), value) + } else { + throw IllegalStateException("unhandled value type, $ExceptionMessage") } } method.returnType.isEnum -> {