diff options
Diffstat (limited to 'integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt')
-rw-r--r-- | integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt b/integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt new file mode 100644 index 00000000..45dbe22b --- /dev/null +++ b/integration-tests/src/test/resources/kmp/test-processor/src/main/kotlin/ValidateProcessor.kt @@ -0,0 +1,29 @@ +import com.google.devtools.ksp.processing.* +import com.google.devtools.ksp.symbol.* +import com.google.devtools.ksp.validate + +class ValidateProcessor(val codeGenerator: CodeGenerator, val logger: KSPLogger) : SymbolProcessor { + var invoked = false + + override fun process(resolver: Resolver): List<KSAnnotated> { + if (invoked) { + return emptyList() + } + invoked = true + + val toValidate = resolver.getSymbolsWithAnnotation("com.example.MyAnnotation") + if (toValidate.firstOrNull() == null || !toValidate.all { it.validate() }) { + logger.error("$toValidate.validate(): not ok") + } + if ((toValidate as? KSClassDeclaration)?.asStarProjectedType()?.isError == true) { + logger.error("$toValidate.asStarProjectedType(): not ok") + } + return emptyList() + } +} + +class ValidateProcessorProvider : SymbolProcessorProvider { + override fun create(env: SymbolProcessorEnvironment): SymbolProcessor { + return ValidateProcessor(env.codeGenerator, env.logger) + } +} |