Как использовать FunSpec.overriding? в КотлинПоэт - PullRequest
0 голосов
/ 11 мая 2018

Отправлено Fleshgrinder on 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()
...