From 6afb68cec0cfee37d17dc1e309cf7bdba566b0ea Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Mon, 24 May 2021 10:43:07 -0700 Subject: [PATCH] UAST: utilize types test base --- .../uast/test/common/kotlin/TypesLogger.kt | 44 +++++++++++++++++++ .../uast/test/common/kotlin/typesTestUtils.kt | 12 +++++ .../uast/test/common/kotlin/TypesTestBase.kt | 43 +----------------- 3 files changed, 57 insertions(+), 42 deletions(-) create mode 100644 plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/TypesLogger.kt create mode 100644 plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/typesTestUtils.kt diff --git a/plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/TypesLogger.kt b/plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/TypesLogger.kt new file mode 100644 index 00000000000..4260733872a --- /dev/null +++ b/plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/TypesLogger.kt @@ -0,0 +1,44 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.uast.test.common.kotlin + +import org.jetbrains.uast.UElement +import org.jetbrains.uast.UExpression +import org.jetbrains.uast.visitor.UastVisitor + +class TypesLogger : UastVisitor { + + val builder = StringBuilder() + + var level = 0 + + override fun visitElement(node: UElement): Boolean { + val initialLine = node.asLogString() + " [" + run { + val renderString = node.asRenderString().lines() + if (renderString.size == 1) { + renderString.single() + } else { + renderString.first() + "..." + renderString.last() + } + } + "]" + + (1..level).forEach { builder.append(" ") } + builder.append(initialLine) + if (node is UExpression) { + val value = node.getExpressionType() + value?.let { builder.append(" : ").append(it) } + } + builder.appendLine() + level++ + return false + } + + override fun afterVisitElement(node: UElement) { + level-- + } + + override fun toString() = builder.toString() +} diff --git a/plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/typesTestUtils.kt b/plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/typesTestUtils.kt new file mode 100644 index 00000000000..7e73eb0d8db --- /dev/null +++ b/plugins/uast-kotlin-base/tests/org/jetbrains/uast/test/common/kotlin/typesTestUtils.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.uast.test.common.kotlin + +import org.jetbrains.uast.UFile + +fun UFile.asLogTypes() = TypesLogger().apply { + this@asLogTypes.accept(this) +}.toString() diff --git a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/TypesTestBase.kt b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/TypesTestBase.kt index 4895c621969..ee6863a3355 100644 --- a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/TypesTestBase.kt +++ b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/TypesTestBase.kt @@ -5,57 +5,16 @@ package org.jetbrains.uast.test.common.kotlin -import org.jetbrains.uast.UElement -import org.jetbrains.uast.UExpression import org.jetbrains.uast.UFile import org.jetbrains.uast.test.env.kotlin.assertEqualsToFile -import org.jetbrains.uast.visitor.UastVisitor import java.io.File interface TypesTestBase { fun getTypesFile(testName: String): File - private fun UFile.asLogTypes() = TypesLogger().apply { - this@asLogTypes.accept(this) - }.toString() - fun check(testName: String, file: UFile) { val valuesFile = getTypesFile(testName) assertEqualsToFile("Log values", valuesFile, file.asLogTypes()) } - - class TypesLogger : UastVisitor { - - val builder = StringBuilder() - - var level = 0 - - override fun visitElement(node: UElement): Boolean { - val initialLine = node.asLogString() + " [" + run { - val renderString = node.asRenderString().lines() - if (renderString.size == 1) { - renderString.single() - } else { - renderString.first() + "..." + renderString.last() - } - } + "]" - - (1..level).forEach { builder.append(" ") } - builder.append(initialLine) - if (node is UExpression) { - val value = node.getExpressionType() - value?.let { builder.append(" : ").append(it) } - } - builder.appendLine() - level++ - return false - } - - override fun afterVisitElement(node: UElement) { - level-- - } - - override fun toString() = builder.toString() - } -} \ No newline at end of file +}