Avoid requesting line number for bad offset (EA-87678)

Example of stack trace:
java.lang.IndexOutOfBoundsException: Wrong offset: 14847. Should be in range: [0, 14846]
	at com.intellij.openapi.editor.impl.LineSet.findLineIndex(LineSet.java:141)
	at com.intellij.openapi.editor.impl.DocumentImpl.getLineNumber(DocumentImpl.java:919)
	at org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringUtilKt.getLineCount(kotlinRefactoringUtil.kt:344)
	at org.jetbrains.kotlin.idea.debugger.KotlinPositionManager.getSourcePosition(KotlinPositionManager.kt:125)
This commit is contained in:
Nikolay Krasko
2016-12-05 21:30:58 +03:00
parent ee1ce184f9
commit 76916b0877
@@ -340,10 +340,12 @@ fun PsiElement.getLineCount(): Int {
if (doc != null) {
val spaceRange = textRange ?: TextRange.EMPTY_RANGE
val startLine = doc.getLineNumber(spaceRange.startOffset)
val endLine = doc.getLineNumber(spaceRange.endOffset)
if (spaceRange.endOffset <= doc.textLength) {
val startLine = doc.getLineNumber(spaceRange.startOffset)
val endLine = doc.getLineNumber(spaceRange.endOffset)
return endLine - startLine
return endLine - startLine
}
}
return (text ?: "").count { it == '\n' } + 1