blob: 5ef052eeb4dc2c2b8a8ede77bfd420fcdbf50e69 [file] [log] [blame]
import com.google.devtools.ksp.processing.CodeGenerator
import com.google.devtools.ksp.processing.Dependencies
import com.google.devtools.ksp.processing.KSPLogger
import com.google.devtools.ksp.processing.Resolver
import com.google.devtools.ksp.processing.SymbolProcessor
import com.google.devtools.ksp.symbol.*
import com.google.devtools.ksp.validate
import com.google.devtools.ksp.visitor.KSDefaultVisitor
import java.io.File
import java.io.OutputStream
import java.io.OutputStreamWriter
class TestProcessor : SymbolProcessor {
lateinit var codeGenerator: CodeGenerator
lateinit var logger: KSPLogger
override fun init(options: Map<String, String>, kotlinVersion: KotlinVersion, codeGenerator: CodeGenerator, logger: KSPLogger) {
this.codeGenerator = codeGenerator
this.logger = logger
}
override fun finish() = Unit
override fun process(resolver: Resolver) {
fun outputForAnno(anno: String) {
val annoFiles = resolver.getSymbolsWithAnnotation(anno).map { (it as KSDeclaration).containingFile!! }
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.getAllFiles().forEach { file ->
logger.warn("${file.packageName.asString()}/${file.fileName}")
}
}
}