From 06960be3ad3d1ef1c7864483cbb0ece8d192fdf6 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 6 Apr 2015 18:06:36 +0300 Subject: [PATCH] Minor: Extract findElementByComment() function --- .../kotlin/test/util/jetTestUtils.kt | 31 +++++++++++++++++++ .../introduce/AbstractJetExtractionTest.kt | 24 ++------------ 2 files changed, 33 insertions(+), 22 deletions(-) diff --git a/compiler/tests/org/jetbrains/kotlin/test/util/jetTestUtils.kt b/compiler/tests/org/jetbrains/kotlin/test/util/jetTestUtils.kt index d5085c30013..b9b37c99efa 100644 --- a/compiler/tests/org/jetbrains/kotlin/test/util/jetTestUtils.kt +++ b/compiler/tests/org/jetbrains/kotlin/test/util/jetTestUtils.kt @@ -18,6 +18,11 @@ package org.jetbrains.kotlin.test.util import com.intellij.testFramework.fixtures.CodeInsightTestFixture import com.intellij.openapi.util.io.FileUtil +import com.intellij.psi.PsiComment +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiWhiteSpace +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.psi.* import java.io.File public fun String.trimTrailingWhitespacesAndAddNewlineAtEOF(): String = @@ -62,3 +67,29 @@ public fun String.trimIndent(): String { } }.joinToString(separator = "\n") } + +public fun JetFile.findElementByComment(commentText: String): JetElement? { + var result: JetElement? = null + accept( + object : JetTreeVisitorVoid() { + override fun visitComment(comment: PsiComment) { + if (comment.getText() == commentText) { + val parent = comment.getParent() + if (parent is JetDeclaration) { + result = parent + } + else { + result = PsiTreeUtil.skipSiblingsForward( + comment, + javaClass(), + javaClass(), + javaClass() + ) as? JetElement + } + } + } + } + ) + + return result +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractJetExtractionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractJetExtractionTest.kt index 8f91dda61cc..32c8e64c076 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractJetExtractionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/introduce/AbstractJetExtractionTest.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.test.ConfigLibraryUtil import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.JetTestUtils +import org.jetbrains.kotlin.test.util.findElementByComment import org.jetbrains.kotlin.utils.emptyOrSingletonList import java.io.File import java.util.Collections @@ -87,28 +88,7 @@ public abstract class AbstractJetExtractionTest() : JetLightCodeInsightFixtureTe protected fun doExtractFunctionTest(path: String) { doTest(path) { file -> - var explicitPreviousSibling: PsiElement? = null - file.accept( - object: JetTreeVisitorVoid() { - override fun visitComment(comment: PsiComment) { - if (comment.getText() == "// SIBLING:") { - val parent = comment.getParent() - if (parent is JetDeclaration) { - explicitPreviousSibling = parent - } - else { - explicitPreviousSibling = PsiTreeUtil.skipSiblingsForward( - comment, - javaClass(), - javaClass(), - javaClass() - ) - } - } - } - } - ) - + val explicitPreviousSibling = file.findElementByComment("// SIBLING:") val fileText = file.getText() ?: "" val expectedNames = InTextDirectivesUtils.findListWithPrefixes(fileText, "// SUGGESTED_NAMES: ") val expectedDescriptors =