201: Uast: fixing KotlinUastGenerationTest by using system-independent inline unaware asRecursiveLogString

This commit is contained in:
Nicolay Mitropolsky
2020-06-11 14:48:46 +03:00
parent b8597b48f1
commit 1b1e579cbf
@@ -26,6 +26,8 @@ import org.jetbrains.uast.generate.replace
import org.jetbrains.uast.kotlin.generate.KotlinUastElementFactory
import org.jetbrains.uast.test.env.kotlin.findElementByTextFromPsi
import org.jetbrains.uast.test.env.kotlin.findUElementByTextFromPsi
import org.jetbrains.uast.visitor.UastVisitor
import java.lang.StringBuilder
import kotlin.test.fail as kfail
class KotlinUastGenerationTest : KotlinLightCodeInsightFixtureTestCase() {
@@ -936,3 +938,26 @@ class KotlinUastGenerationTest : KotlinLightCodeInsightFixtureTestCase() {
}
}
// it is a copy of org.jetbrains.uast.UastUtils.asRecursiveLogString with `appendLine` instead of `appendln` to avoid windows related issues
private fun UElement.asRecursiveLogString(render: (UElement) -> String = { it.asLogString() }): String {
val stringBuilder = StringBuilder()
val indent = " "
accept(object : UastVisitor {
private var level = 0
override fun visitElement(node: UElement): Boolean {
stringBuilder.append(indent.repeat(level))
stringBuilder.appendLine(render(node))
level++
return false
}
override fun afterVisitElement(node: UElement) {
super.afterVisitElement(node)
level--
}
})
return stringBuilder.toString()
}