From 10d1eb40903c26c63abc1bac86bcf664727d7427 Mon Sep 17 00:00:00 2001 From: Kuan-Ying Chou Date: Mon, 18 Mar 2024 19:08:32 +0000 Subject: [PATCH] Test annotation value of annotation type --- .../ksp/processor/AnnotationArgumentProcessor.kt | 16 ++++++++++++---- test-utils/testData/api/annotationValue_java.kt | 2 ++ test-utils/testData/api/annotationValue_kt.kt | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AnnotationArgumentProcessor.kt b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AnnotationArgumentProcessor.kt index 68e263c641..15985bb5af 100644 --- a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AnnotationArgumentProcessor.kt +++ b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/AnnotationArgumentProcessor.kt @@ -20,6 +20,7 @@ package com.google.devtools.ksp.processor import com.google.devtools.ksp.getClassDeclarationByName import com.google.devtools.ksp.processing.Resolver import com.google.devtools.ksp.symbol.KSAnnotated +import com.google.devtools.ksp.symbol.KSAnnotation import com.google.devtools.ksp.symbol.KSType import com.google.devtools.ksp.symbol.KSValueArgument import com.google.devtools.ksp.symbol.KSVisitorVoid @@ -52,10 +53,17 @@ class AnnotationArgumentProcessor : AbstractTestProcessor() { inner class ArgumentVisitor : KSVisitorVoid() { override fun visitValueArgument(valueArgument: KSValueArgument, data: Unit) { - if (valueArgument.value is KSType) { - results.add((valueArgument.value as KSType).declaration.toString()) - } else { - results.add(valueArgument.value.toString()) + valueArgument.value.also { + if (it is KSType) { + results.add(it.declaration.toString()) + } else { + results.add(it.toString()) + if (it is KSAnnotation) { + it.arguments.forEach { + it.accept(this, Unit) + } + } + } } } } diff --git a/test-utils/testData/api/annotationValue_java.kt b/test-utils/testData/api/annotationValue_java.kt index 448ea5e0ec..afff9f96f2 100644 --- a/test-utils/testData/api/annotationValue_java.kt +++ b/test-utils/testData/api/annotationValue_java.kt @@ -25,7 +25,9 @@ // Error type synthetic declaration // Array // @Foo +// 17 // @Suppress +// [name1, name2] // G // ONE // 31 diff --git a/test-utils/testData/api/annotationValue_kt.kt b/test-utils/testData/api/annotationValue_kt.kt index 8d9bfd4916..e9f7b97233 100644 --- a/test-utils/testData/api/annotationValue_kt.kt +++ b/test-utils/testData/api/annotationValue_kt.kt @@ -29,7 +29,9 @@ // Error type synthetic declaration // [, Foo] // @Foo +// 17 // @Suppress +// [name1, name2] // G // ONE // 31