Fir2Ir: fix conversion for non-PSI source elements

This commit is contained in:
Ilya Chernikov
2021-11-03 14:23:16 +01:00
committed by teamcity
parent 5818f0786a
commit 2d7af0ce72
@@ -80,9 +80,9 @@ internal fun <T : IrElement> KtSourceElement?.convertWithOffsets(
f: (startOffset: Int, endOffset: Int) -> T
): T {
val psi = psi
if (psi is PsiCompiledElement || psi == null) return f(UNDEFINED_OFFSET, UNDEFINED_OFFSET)
val startOffset = psi.startOffsetSkippingComments
val endOffset = psi.endOffset
if (psi is PsiCompiledElement) return f(UNDEFINED_OFFSET, UNDEFINED_OFFSET)
val startOffset = psi?.startOffsetSkippingComments ?: this?.startOffset ?: UNDEFINED_OFFSET
val endOffset = this?.endOffset ?: UNDEFINED_OFFSET
return f(startOffset, endOffset)
}
@@ -90,13 +90,13 @@ internal fun <T : IrElement> FirQualifiedAccess.convertWithOffsets(
f: (startOffset: Int, endOffset: Int) -> T
): T {
val psi = psi
if (psi is PsiCompiledElement || psi == null) return f(UNDEFINED_OFFSET, UNDEFINED_OFFSET)
if (psi is PsiCompiledElement) return f(UNDEFINED_OFFSET, UNDEFINED_OFFSET)
val startOffset = if (psi is KtQualifiedExpression) {
(psi.selectorExpression ?: psi).startOffsetSkippingComments
} else {
psi.startOffsetSkippingComments
psi?.startOffsetSkippingComments ?: source?.startOffset ?: UNDEFINED_OFFSET
}
val endOffset = psi.endOffset
val endOffset = source?.endOffset ?: UNDEFINED_OFFSET
return f(startOffset, endOffset)
}