FIR2IR: fix offsets for qualified expressions
This commit is contained in:
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
import org.jetbrains.kotlin.fir.expressions.FirConstExpression
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
@@ -47,6 +48,7 @@ import org.jetbrains.kotlin.ir.types.impl.IrErrorTypeImpl
|
|||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
import org.jetbrains.kotlin.ir.util.functions
|
import org.jetbrains.kotlin.ir.util.functions
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.psi.KtQualifiedExpression
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments
|
import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments
|
||||||
import org.jetbrains.kotlin.types.ConstantValueKind
|
import org.jetbrains.kotlin.types.ConstantValueKind
|
||||||
@@ -56,9 +58,24 @@ import org.jetbrains.kotlin.util.OperatorNameConventions
|
|||||||
internal fun <T : IrElement> FirElement.convertWithOffsets(
|
internal fun <T : IrElement> FirElement.convertWithOffsets(
|
||||||
f: (startOffset: Int, endOffset: Int) -> T
|
f: (startOffset: Int, endOffset: Int) -> T
|
||||||
): T {
|
): T {
|
||||||
if (psi is PsiCompiledElement) return f(UNDEFINED_OFFSET, UNDEFINED_OFFSET)
|
val psi = psi
|
||||||
val startOffset = psi?.startOffsetSkippingComments ?: UNDEFINED_OFFSET
|
if (psi is PsiCompiledElement || psi == null) return f(UNDEFINED_OFFSET, UNDEFINED_OFFSET)
|
||||||
val endOffset = psi?.endOffset ?: UNDEFINED_OFFSET
|
val startOffset = psi.startOffsetSkippingComments
|
||||||
|
val endOffset = psi.endOffset
|
||||||
|
return f(startOffset, endOffset)
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
val startOffset = if (psi is KtQualifiedExpression) {
|
||||||
|
(psi.selectorExpression ?: psi).startOffsetSkippingComments
|
||||||
|
} else {
|
||||||
|
psi.startOffsetSkippingComments
|
||||||
|
}
|
||||||
|
val endOffset = psi.endOffset
|
||||||
return f(startOffset, endOffset)
|
return f(startOffset, endOffset)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user