From d86bede2936c7bd0846a2d219d8153e321b2aaef Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 1 Aug 2019 21:49:11 +0900 Subject: [PATCH] Fix compatibility issue with the 'kotlinttest' plugin --- .../idea/refactoring/kotlinRefactoringUtil.kt | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt index e63d042569a..e9e152def30 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt @@ -308,6 +308,36 @@ class SelectionAwareScopeHighlighter(val editor: Editor) { } } +@Deprecated( + "Use org.jetbrains.kotlin.idea.core.util.getLineStartOffset() instead", + ReplaceWith("this.getLineStartOffset(line)", "org.jetbrains.kotlin.idea.core.util.getLineStartOffset"), + DeprecationLevel.ERROR +) +fun PsiFile.getLineStartOffset(line: Int): Int? { + val doc = viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(this) + if (doc != null && line >= 0 && line < doc.lineCount) { + val startOffset = doc.getLineStartOffset(line) + val element = findElementAt(startOffset) ?: return startOffset + + if (element is PsiWhiteSpace || element is PsiComment) { + return PsiTreeUtil.skipSiblingsForward(element, PsiWhiteSpace::class.java, PsiComment::class.java)?.startOffset ?: startOffset + } + return startOffset + } + + return null +} + +@Deprecated( + "Use org.jetbrains.kotlin.idea.core.util.getLineEndOffset() instead", + ReplaceWith("this.getLineEndOffset(line)", "org.jetbrains.kotlin.idea.core.util.getLineEndOffset"), + DeprecationLevel.ERROR +) +fun PsiFile.getLineEndOffset(line: Int): Int? { + val document = viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(this) + return document?.getLineEndOffset(line) +} + fun PsiElement.getLineNumber(start: Boolean = true): Int { val document = containingFile.viewProvider.document ?: PsiDocumentManager.getInstance(project).getDocument(containingFile) val index = if (start) this.startOffset else this.endOffset