<lambda>null1 import 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