From 1b1e579cbf7a51b55ec7a552ddf737b27911cfe9 Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Thu, 11 Jun 2020 14:48:46 +0300 Subject: [PATCH] 201: Uast: fixing `KotlinUastGenerationTest` by using system-independent inline unaware `asRecursiveLogString` --- .../tests/KotlinUastGenerationTest.kt.201 | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.201 b/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.201 index 77716adb13d..022ab1ef4e6 100644 --- a/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.201 +++ b/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.201 @@ -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() +}