Congratulations, folks :slightly_smiling_face: <@...
# ksp
e
Congratulations, folks 🙂 @Ting-Yuan Huang
KSP is open to changes at this alpha stage so please feel free to reach out to us while seeing any bugs or areas to improve, whether they are in the implementation or API design.
I'd love if the API didn't require usage of `var`s because of
init
and
process
on the same interface. So this:
Copy code
class Processor : SymbolProcessor {
    private lateinit var codeGenerator: CodeGenerator

    fun init(codeGenerator: CodeGenerator, ...) {
        this.codeGenerator = codeGenerator
    }

    fun process(...) {}
}
would become this:
Copy code
class Processor(private val codeGenerator: CodeGenerator) : SymbolProcessor {
    override fun process(...) { ... }

    object Provider : SymbolProcessorProvider {
        override fun create(codeGenerator: CodeGenerator, ...) = Processor(codeGenerator) 
    }
}
as it's less code and safer. It would also allow for future optimizations like concurrent execution of multiple `SymbolProcessor`s since it would be possible to call
SymbolProcessorProvider.create
, for example, for every module.