[FE] Fix positioning strategy for SAFE_CALL_WILL_CHANGE_NULLABILITY warning
^KT-46860
This commit is contained in:
committed by
teamcity
parent
565c61a702
commit
078acb1bfe
+24
@@ -1120,6 +1120,30 @@ object LightTreePositioningStrategies {
|
||||
return markElement(byKeyword, startOffset, endOffset, tree, node)
|
||||
}
|
||||
}
|
||||
|
||||
val CALL_ELEMENT_WITH_DOT: LightTreePositioningStrategy = object : LightTreePositioningStrategy() {
|
||||
override fun mark(
|
||||
node: LighterASTNode,
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
tree: FlyweightCapableTreeStructure<LighterASTNode>
|
||||
): List<TextRange> {
|
||||
val callElementRanges = SELECTOR_BY_QUALIFIED.mark(node, startOffset, endOffset, tree)
|
||||
val callElementRange = when (callElementRanges.size) {
|
||||
1 -> callElementRanges.first()
|
||||
else -> return callElementRanges
|
||||
}
|
||||
|
||||
val dotRanges = SAFE_ACCESS.mark(node, startOffset, endOffset, tree)
|
||||
val dotRange = when (dotRanges.size) {
|
||||
1 -> dotRanges.first()
|
||||
else -> return dotRanges
|
||||
}
|
||||
|
||||
return listOf(TextRange(dotRange.startOffset, callElementRange.endOffset))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun KtSourceElement.hasValOrVar(): Boolean =
|
||||
|
||||
+19
@@ -499,6 +499,25 @@ object PositioningStrategies {
|
||||
}
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val CALL_ELEMENT_WITH_DOT: PositioningStrategy<KtQualifiedExpression> = object : PositioningStrategy<KtQualifiedExpression>() {
|
||||
override fun mark(element: KtQualifiedExpression): List<TextRange> {
|
||||
val callElementRanges = SELECTOR_BY_QUALIFIED.mark(element)
|
||||
val callElementRange = when (callElementRanges.size) {
|
||||
1 -> callElementRanges.first()
|
||||
else -> return callElementRanges
|
||||
}
|
||||
|
||||
val dotRanges = SAFE_ACCESS.mark(element)
|
||||
val dotRange = when (dotRanges.size) {
|
||||
1 -> dotRanges.first()
|
||||
else -> return dotRanges
|
||||
}
|
||||
|
||||
return listOf(TextRange(dotRange.startOffset, callElementRange.endOffset))
|
||||
}
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val DECLARATION_WITH_BODY: PositioningStrategy<KtDeclarationWithBody> = object : PositioningStrategy<KtDeclarationWithBody>() {
|
||||
override fun mark(element: KtDeclarationWithBody): List<TextRange> {
|
||||
|
||||
+5
@@ -364,4 +364,9 @@ object SourceElementPositioningStrategies {
|
||||
LightTreePositioningStrategies.DELEGATED_SUPERTYPE_BY_KEYWORD,
|
||||
PositioningStrategies.DELEGATED_SUPERTYPE_BY_KEYWORD
|
||||
)
|
||||
|
||||
val CALL_ELEMENT_WITH_DOT = SourceElementPositioningStrategy(
|
||||
LightTreePositioningStrategies.CALL_ELEMENT_WITH_DOT,
|
||||
PositioningStrategies.CALL_ELEMENT_WITH_DOT
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user