IR: remove unnecessary reliance on the PSI in inliner

This commit is contained in:
Ilya Chernikov
2021-11-08 12:59:03 +01:00
committed by teamcity
parent 17bbaf27ea
commit 5cca01a7d2
5 changed files with 23 additions and 11 deletions
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.incremental.components.Position
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrFunction
import org.jetbrains.kotlin.ir.declarations.name
import org.jetbrains.kotlin.ir.descriptors.toIrBasedDescriptor
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
import org.jetbrains.kotlin.ir.expressions.IrLoop
@@ -50,7 +51,7 @@ class IrSourceCompilerForInline(
root.classCodegen.type.internalName,
root.signature.asmMethod,
root.irFunction.inlineScopeVisibility,
root.irFunction.fileParent.getKtFile(),
root.irFunction.fileParent.getIoFile(),
callElement.psiElement?.let { CodegenUtil.getLineNumberForElement(it, false) } ?: 0
)
}
@@ -74,15 +75,17 @@ class IrSourceCompilerForInline(
}
if (jvmSignature.asmMethod.name != callee.name.asString()) {
val ktFile = codegen.irFunction.fileParent.getKtFile()
if (ktFile != null && ktFile.doNotAnalyze == null) {
if ((ktFile != null && ktFile.doNotAnalyze == null) || ktFile == null) {
state.trackLookup(callee.parentAsClass.kotlinFqName, jvmSignature.asmMethod.name, object : LocationInfo {
override val filePath = ktFile.virtualFilePath
override val filePath = ktFile?.virtualFile?.path ?: codegen.irFunction.fileParent.fileEntry.name
override val position: Position
get() = DiagnosticUtils.getLineAndColumnInPsiFile(
ktFile,
TextRange(callElement.startOffset, callElement.endOffset)
).let { Position(it.line, it.column) }
get() =
if (ktFile == null) Position.NO_POSITION
else DiagnosticUtils.getLineAndColumnInPsiFile(
ktFile,
TextRange(callElement.startOffset, callElement.endOffset)
).let { Position(it.line, it.column) }
})
}
}