Как использовать FunSpec.overriding? в КотлинПоэт
Представлено Fleshgrinder на GitHub.
FunSpec
Класс имеет очень удобный метод переопределения, однако неясно, как это можно использовать при генерации кода.
Минимальный пример:
FileSpec.builder("com.fleshgrinder", "KotlinPoet").apply {
val className = ClassName("com.fleshgrinder", "KotlinPoet")
addType(TypeSpec.classBuilder(className).apply {
addFunction(FunSpec.builder("toString").apply {
addModifiers(KModifier.OVERRIDE)
addStatement("""return "KotlinPoet"""")
}.build())
}.build())
}.build().writeTo(System.out)
Который генерирует:
class KotlinPoet {
override fun toString() = "KotlinPoet"
}
Вывод, который он генерирует, идеален, но код для его генерации - нет.
FunSpec.overriding(Any::toString).apply {
addStatement("""return "KotlinPoet"""")
}.build()