<lambda>null1import com.google.devtools.ksp.processing.* 2 import com.google.devtools.ksp.symbol.* 3 import com.google.devtools.ksp.validate 4 import java.io.OutputStreamWriter 5 6 class TestProcessor( 7 val codeGenerator: CodeGenerator, 8 val logger: KSPLogger 9 ) : SymbolProcessor { 10 // FIXME: use getSymbolsWithAnnotation after it is fixed. 11 var rounds = 0 12 override fun process(resolver: Resolver): List<KSAnnotated> { 13 rounds++ 14 logger.warn("$rounds: ${resolver.getNewFiles().toList()}") 15 16 if (rounds == 1) { 17 codeGenerator.createNewFile(Dependencies(false), "", "Foo", "kt").use { output -> 18 OutputStreamWriter(output).use { writer -> 19 writer.write("package com.example\n\n") 20 writer.write("open class Foo : Goo()\n") 21 } 22 } 23 } 24 25 if (rounds == 2) { 26 codeGenerator.createNewFile(Dependencies(false), "", "Goo", "kt").use { output -> 27 OutputStreamWriter(output).use { writer -> 28 writer.write("package com.example\n\n") 29 writer.write("open class Goo : Baz()\n") 30 } 31 } 32 } 33 34 resolver.getNewFiles().forEach { 35 it.validate() 36 } 37 38 return emptyList() 39 } 40 } 41 42 class TestProcessorProvider : SymbolProcessorProvider { createnull43 override fun create( 44 environment: SymbolProcessorEnvironment 45 ): SymbolProcessor { 46 return TestProcessor(environment.codeGenerator, environment.logger) 47 } 48 } 49