From 68c91560534545975623b0a2a8b7afa8d432a527 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 25 Oct 2021 14:39:40 +0300 Subject: [PATCH] Add possibility to get line offsets from PsiIrFileEntry This is needed for tests to be able to get offsets without explicit file on disk. --- .../ir.tree/src/org/jetbrains/kotlin/ir/PsiIrFileEntry.kt | 2 ++ .../src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) 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(