diff options
author | Jiaxiang Chen <jiaxiang@google.com> | 2022-09-09 12:00:31 -0700 |
---|---|---|
committer | Jiaxiang Chen <roaringacw@gmail.com> | 2022-09-13 12:59:19 -0700 |
commit | 35a12d6148ddd3ffb42b4d6ae0a99395485bde62 (patch) | |
tree | 434c40d06e4ed91a3b38717aa83b0d27c9034f93 /test-utils/src/main/kotlin/com/google/devtools/ksp/processor | |
parent | 58c6c8388bfd15536c40e80e52f21c2e2976e298 (diff) | |
download | ksp-35a12d6148ddd3ffb42b4d6ae0a99395485bde62.tar.gz |
manually look up in scope when annotation argument type is nested annotation.
* fixes #989
Diffstat (limited to 'test-utils/src/main/kotlin/com/google/devtools/ksp/processor')
-rw-r--r-- | test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetAnnotationByTypeProcessor.kt | 36 | ||||
-rw-r--r-- | test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetByNameProcessor.kt | 12 |
2 files changed, 48 insertions, 0 deletions
diff --git a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetAnnotationByTypeProcessor.kt b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetAnnotationByTypeProcessor.kt new file mode 100644 index 00000000..8615cdb8 --- /dev/null +++ b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetAnnotationByTypeProcessor.kt @@ -0,0 +1,36 @@ +package com.google.devtools.ksp.processor + +import com.google.devtools.ksp.KspExperimental +import com.google.devtools.ksp.getAnnotationsByType +import com.google.devtools.ksp.processing.Resolver +import com.google.devtools.ksp.symbol.KSAnnotated +import com.google.devtools.ksp.symbol.KSClassDeclaration + +annotation class KotlinAnnotationWithInnerDefaults( + val innerAnnotationVal: InnerAnnotation = InnerAnnotation(innerAnnotationDefault = 7) +) { + annotation class InnerAnnotation( + val innerAnnotationDefault: Int, + val moreInnerAnnotation: MoreInnerAnnotation = MoreInnerAnnotation("OK") + ) { + annotation class MoreInnerAnnotation(val moreInnerAnnotationDefault: String) + } +} + +class GetAnnotationByTypeProcessor : AbstractTestProcessor() { + val results = mutableListOf<String>() + private val annotationKClass = KotlinAnnotationWithInnerDefaults::class + + override fun toResult(): List<String> { + return results + } + + @OptIn(KspExperimental::class) + override fun process(resolver: Resolver): List<KSAnnotated> { + val decl = resolver.getAllFiles().single().declarations + .single { it.simpleName.asString() == "A" } as KSClassDeclaration + val anno = decl.getAnnotationsByType(annotationKClass).first() + results.add(anno.innerAnnotationVal.toString()) + return emptyList() + } +} diff --git a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetByNameProcessor.kt b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetByNameProcessor.kt index bc406df2..c7e49eec 100644 --- a/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetByNameProcessor.kt +++ b/test-utils/src/main/kotlin/com/google/devtools/ksp/processor/GetByNameProcessor.kt @@ -1,5 +1,6 @@ package com.google.devtools.ksp.processor +import com.google.devtools.ksp.getClassDeclarationByName import com.google.devtools.ksp.getFunctionDeclarationsByName import com.google.devtools.ksp.getPropertyDeclarationByName import com.google.devtools.ksp.processing.Resolver @@ -13,6 +14,12 @@ class GetByNameProcessor : AbstractTestProcessor() { } override fun process(resolver: Resolver): List<KSAnnotated> { + val classNames = listOf( + "lib1.Foo", + "lib1.Foo.FooNested", + "source.FooInSource", + "source.FooInSource.FooInSourceNested" + ) val funNames = listOf( "lib1.Foo.lib1MemberFun", "lib1.lib1TopFun", @@ -28,6 +35,11 @@ class GetByNameProcessor : AbstractTestProcessor() { "source.FooInSource.sourceMemberProp", "source.propInSource", ) + for (className in classNames) { + if (resolver.getClassDeclarationByName(className) == null) { + results.add("failed to get $className") + } + } for (funName in funNames) { if (resolver.getFunctionDeclarationsByName(funName, true).none()) { results.add("failed to get $funName") |