diff options
Diffstat (limited to 'integration-tests/src/test/resources/output-deps/test-processor/src/main/kotlin/TestProcessor.kt')
-rw-r--r-- | integration-tests/src/test/resources/output-deps/test-processor/src/main/kotlin/TestProcessor.kt | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/integration-tests/src/test/resources/output-deps/test-processor/src/main/kotlin/TestProcessor.kt b/integration-tests/src/test/resources/output-deps/test-processor/src/main/kotlin/TestProcessor.kt new file mode 100644 index 00000000..9e8436f9 --- /dev/null +++ b/integration-tests/src/test/resources/output-deps/test-processor/src/main/kotlin/TestProcessor.kt @@ -0,0 +1,61 @@ +import com.google.devtools.ksp.containingFile +import com.google.devtools.ksp.processing.* +import com.google.devtools.ksp.symbol.* +import java.io.OutputStreamWriter + +class TestProcessor : SymbolProcessor { + lateinit var codeGenerator: CodeGenerator + lateinit var logger: KSPLogger + var processed = false + + fun init( + options: Map<String, String>, + kotlinVersion: KotlinVersion, + codeGenerator: CodeGenerator, + logger: KSPLogger, + ) { + this.codeGenerator = codeGenerator + this.logger = logger + } + + override fun process(resolver: Resolver): List<KSAnnotated> { + if (processed) { + return emptyList() + } + fun outputForAnno(anno: String) { + val annoFiles = + resolver.getSymbolsWithAnnotation(anno).map { (it as KSDeclaration).containingFile!! }.toList() + codeGenerator.createNewFile(Dependencies(false, *annoFiles.toTypedArray()), "", anno, "log").use { output -> + OutputStreamWriter(output).use { writer -> + writer.write(annoFiles.map { it.fileName }.joinToString(", ")) + } + } + } + + outputForAnno("p1.Anno1") + outputForAnno("p1.Anno2") + + resolver.getNewFiles().forEach { file -> + logger.warn("${file.packageName.asString()}/${file.fileName}") + val outputBaseFN = file.fileName.replace(".kt", "Generated").replace(".java", "Generated") + codeGenerator.createNewFile(Dependencies(false, file), file.packageName.asString(), outputBaseFN, "kt") + .use { output -> + OutputStreamWriter(output).use { writer -> + writer.write("private val unused = \"unused\"") + } + } + } + processed = true + return emptyList() + } +} + +class TestProcessorProvider : SymbolProcessorProvider { + override fun create( + env: SymbolProcessorEnvironment, + ): SymbolProcessor { + return TestProcessor().apply { + init(env.options, env.kotlinVersion, env.codeGenerator, env.logger) + } + } +} |