Pull Up: Initial support
#KT-7330 Fixed
This commit is contained in:
@@ -16,14 +16,17 @@
|
||||
|
||||
package org.jetbrains.kotlin.test.util
|
||||
|
||||
import com.intellij.codeInspection.SmartHashMap
|
||||
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 com.intellij.util.SmartFMap
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
public fun String.trimTrailingWhitespacesAndAddNewlineAtEOF(): String =
|
||||
this.split('\n').map { it.trimEnd() }.joinToString(separator = "\n").let {
|
||||
@@ -74,28 +77,29 @@ public fun String.trimIndent(): String {
|
||||
}.joinToString(separator = "\n")
|
||||
}
|
||||
|
||||
public fun JetFile.findElementByComment(commentText: String): JetElement? {
|
||||
var result: JetElement? = null
|
||||
public fun JetFile.findElementByCommentPrefix(commentText: String): JetElement? =
|
||||
findElementsByCommentPrefix(commentText).keySet().singleOrNull()
|
||||
|
||||
public fun JetFile.findElementsByCommentPrefix(prefix: String): Map<JetElement, String> {
|
||||
var result = SmartFMap.emptyMap<JetElement, String>()
|
||||
accept(
|
||||
object : JetTreeVisitorVoid() {
|
||||
override fun visitComment(comment: PsiComment) {
|
||||
if (comment.getText() == commentText) {
|
||||
val commentText = comment.getText()
|
||||
if (commentText.startsWith(prefix)) {
|
||||
val parent = comment.getParent()
|
||||
if (parent is JetDeclaration) {
|
||||
result = parent
|
||||
}
|
||||
else {
|
||||
result = PsiTreeUtil.skipSiblingsForward(
|
||||
val elementToAdd = when (parent) {
|
||||
is JetDeclaration -> parent
|
||||
else -> PsiTreeUtil.skipSiblingsForward(
|
||||
comment,
|
||||
javaClass<PsiWhiteSpace>(),
|
||||
javaClass<PsiComment>(),
|
||||
javaClass<JetPackageDirective>()
|
||||
) as? JetElement
|
||||
}
|
||||
javaClass<PsiWhiteSpace>(), javaClass<PsiComment>(), javaClass<JetPackageDirective>()
|
||||
)
|
||||
} as? JetElement ?: return
|
||||
|
||||
result = result.plus(elementToAdd, commentText.substring(prefix.length()).trim())
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user