Fallback to fileEntry provided by irFile
This commit is contained in:
+5
-1
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.backend.common.ir.ir2string
|
|||||||
import org.jetbrains.kotlin.backend.common.lower.allOverridden
|
import org.jetbrains.kotlin.backend.common.lower.allOverridden
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
import org.jetbrains.kotlin.backend.jvm.JvmLoweredDeclarationOrigin
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns.FQ_NAMES
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns.FQ_NAMES
|
||||||
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
|
||||||
@@ -88,7 +89,10 @@ fun JvmBackendContext.getSourceMapper(declaration: IrClass): SourceMapper {
|
|||||||
// NOTE: apparently inliner requires the source range to cover the
|
// NOTE: apparently inliner requires the source range to cover the
|
||||||
// whole file the class is declared in rather than the class only.
|
// whole file the class is declared in rather than the class only.
|
||||||
// TODO: revise
|
// TODO: revise
|
||||||
val endLineNumber = fileEntry?.getSourceRangeInfo(0, fileEntry.maxOffset)?.endLineNumber ?: 0
|
val endLineNumber = when {
|
||||||
|
fileEntry is MultifileFacadeFileEntry -> 0
|
||||||
|
else -> fileEntry?.getSourceRangeInfo(0, fileEntry.maxOffset)?.endLineNumber ?: 0
|
||||||
|
}
|
||||||
return SourceMapper(
|
return SourceMapper(
|
||||||
SourceInfo.createInfoForIr(
|
SourceInfo.createInfoForIr(
|
||||||
endLineNumber + 1,
|
endLineNumber + 1,
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ class PsiSourceManager : SourceManager {
|
|||||||
(irFile.fileEntry as? PsiFileEntry)?.let { ktFileByFileEntry[it] }
|
(irFile.fileEntry as? PsiFileEntry)?.let { ktFileByFileEntry[it] }
|
||||||
|
|
||||||
override fun getFileEntry(irFile: IrFile): SourceManager.FileEntry? =
|
override fun getFileEntry(irFile: IrFile): SourceManager.FileEntry? =
|
||||||
fileEntriesByIrFile[irFile]
|
fileEntriesByIrFile[irFile] ?: irFile.fileEntry
|
||||||
|
|
||||||
fun <E : PsiElement> findPsiElement(irElement: IrElement, irFile: IrFile, psiElementClass: KClass<E>): E? {
|
fun <E : PsiElement> findPsiElement(irElement: IrElement, irFile: IrFile, psiElementClass: KClass<E>): E? {
|
||||||
val psiFileEntry = fileEntriesByIrFile[irFile] ?: return null
|
val psiFileEntry = fileEntriesByIrFile[irFile] ?: return null
|
||||||
|
|||||||
Reference in New Issue
Block a user