[FIR] Deprecate using typealias as callable qualifier in import

^KT-64350 Fixed
This commit is contained in:
Roman Efremov
2024-02-13 11:33:29 +01:00
committed by Space Team
parent 802366064d
commit 3994e3f63a
19 changed files with 157 additions and 10 deletions
@@ -1048,6 +1048,19 @@ object LightTreePositioningStrategies {
}
}
val IMPORT_LAST_BUT_ONE_NAME: LightTreePositioningStrategy = object : LightTreePositioningStrategy() {
override fun mark(
node: LighterASTNode,
startOffset: Int,
endOffset: Int,
tree: FlyweightCapableTreeStructure<LighterASTNode>
): List<TextRange> {
val references = tree.collectDescendantsOfType(node, KtNodeTypes.REFERENCE_EXPRESSION)
val nodeToMark = references.elementAtOrNull(references.size - 2) ?: node
return markElement(nodeToMark, startOffset, endOffset, tree, node)
}
}
val IMPORT_ALIAS: LightTreePositioningStrategy = object : LightTreePositioningStrategy() {
override fun mark(
node: LighterASTNode,
@@ -17,6 +17,8 @@ import org.jetbrains.kotlin.lexer.KtTokens.MODALITY_MODIFIERS
import org.jetbrains.kotlin.lexer.KtTokens.VISIBILITY_MODIFIERS
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.utils.addToStdlib.UnsafeCastFunction
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import org.jetbrains.kotlin.utils.sure
object PositioningStrategies {
@@ -1013,6 +1015,20 @@ object PositioningStrategies {
}
}
@OptIn(UnsafeCastFunction::class)
val IMPORT_LAST_BUT_ONE_NAME: PositioningStrategy<KtImportDirective> = object : PositioningStrategy<KtImportDirective>() {
override fun mark(element: KtImportDirective): List<TextRange> {
element.importedReference
?.safeAs<KtDotQualifiedExpression>()
?.receiverExpression
?.safeAs<KtDotQualifiedExpression>()
?.selectorExpression
?.let { return markElement(it) }
return super.mark(element)
}
}
val LABEL: PositioningStrategy<KtElement> = object : PositioningStrategy<KtElement>() {
override fun mark(element: KtElement): List<TextRange> {
return super.mark((element as? KtExpressionWithLabel)?.labelQualifier ?: element)
@@ -286,6 +286,11 @@ object SourceElementPositioningStrategies {
PositioningStrategies.IMPORT_LAST_NAME
)
val IMPORT_LAST_BUT_ONE_NAME = SourceElementPositioningStrategy(
LightTreePositioningStrategies.IMPORT_LAST_BUT_ONE_NAME,
PositioningStrategies.IMPORT_LAST_BUT_ONE_NAME,
)
val SPREAD_OPERATOR = SourceElementPositioningStrategy(
LightTreePositioningStrategies.SPREAD_OPERATOR,
PositioningStrategies.SPREAD_OPERATOR