diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/PsiIrFileEntry.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/PsiIrFileEntry.kt index 6e9197b10cb..3b1b00556d1 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/PsiIrFileEntry.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/PsiIrFileEntry.kt @@ -53,6 +53,8 @@ class PsiIrFileEntry(val psiFile: PsiFile) : IrFileEntry { override fun toString(): String = getRecognizableName() + fun getLineOffsets() = lineStartOffsets.copyOf() + fun findPsiElement(irElement: IrElement): PsiElement? { var psiElement = fileViewProvider.findElementAt(irElement.startOffset) while (psiElement != null) { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt index 8707d2a24ce..8c2c13cfbb7 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt @@ -175,9 +175,10 @@ val File.lineStartOffsets: IntArray return buffer.toIntArray() } -val IrFileEntry.lineStartOffsets - get() = File(name).let { - if (it.exists() && it.isFile) it.lineStartOffsets else IntArray(0) +val IrFileEntry.lineStartOffsets: IntArray + get() = when (this) { + is PsiIrFileEntry -> this.getLineOffsets() + else -> File(name).let { if (it.exists() && it.isFile) it.lineStartOffsets else IntArray(0) } } class NaiveSourceBasedFileEntryImpl(