Coverage Summary for Class: TestProcessorProvider (<empty package name>)

Class Class, % Method, % Branch, % Line, % Instruction, %
TestProcessorProvider 0% (0/1) 0% (0/2) 0% (0/2) 0% (0/9)


 import com.google.auto.service.AutoService
 import com.google.devtools.ksp.processing.*
 import com.google.devtools.ksp.symbol.KSAnnotated
 import com.google.devtools.ksp.symbol.KSClassDeclaration
 import com.google.devtools.ksp.symbol.KSNode
 import com.google.devtools.ksp.visitor.KSTopDownVisitor
 import java.io.OutputStreamWriter
 
 @AutoService(SymbolProcessorProvider::class)
 class TestProcessorProvider : SymbolProcessorProvider {
   override fun create(environment: SymbolProcessorEnvironment) =
       TestProcessor(environment.codeGenerator, environment.logger)
 }
 
 class TestProcessor(val codeGenerator: CodeGenerator, val logger: KSPLogger) : SymbolProcessor {
   private var invoked = false
 
   override fun process(resolver: Resolver): List<KSAnnotated> {
     val allFiles = resolver.getAllFiles().map { it.fileName }
     logger.warn(allFiles.toList().toString())
     if (invoked) {
       return emptyList()
     }
     invoked = true
 
     codeGenerator
         .createNewFile(
             dependencies = Dependencies.ALL_FILES,
             packageName = "",
             fileName = "Foo",
             extensionName = "kt")
         .use { output ->
           OutputStreamWriter(output).use { writer ->
             writer.write("package com.example\n\n")
             writer.write("class Foo {\n")
 
             val visitor = ClassVisitor()
             resolver.getAllFiles().forEach { it.accept(visitor, writer) }
             writer.write("}\n")
           }
         }
     return emptyList()
   }
 }
 
 class ClassVisitor : KSTopDownVisitor<OutputStreamWriter, Unit>() {
   override fun defaultHandler(node: KSNode, data: OutputStreamWriter) {}
 
   override fun visitClassDeclaration(
       classDeclaration: KSClassDeclaration,
       data: OutputStreamWriter
   ) {
     super.visitClassDeclaration(classDeclaration, data)
     val symbolName = classDeclaration.simpleName.asString().lowercase()
     data.write("    val $symbolName = true\n")
   }
 }