[FIR] Implement EXPANDED_TYPE_CANNOT_BE_INHERITED, PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE
Add `starAsModifier` to `modifierSetPosition`
This commit is contained in:
committed by
teamcityserver
parent
937846b62d
commit
ec20f52707
@@ -363,7 +363,7 @@ object PositioningStrategies {
|
||||
val LATEINIT_MODIFIER: PositioningStrategy<KtModifierListOwner> = modifierSetPosition(KtTokens.LATEINIT_KEYWORD)
|
||||
|
||||
@JvmField
|
||||
val VARIANCE_MODIFIER: PositioningStrategy<KtModifierListOwner> = modifierSetPosition(KtTokens.IN_KEYWORD, KtTokens.OUT_KEYWORD)
|
||||
val VARIANCE_MODIFIER: PositioningStrategy<KtModifierListOwner> = projectionPosition()
|
||||
|
||||
@JvmField
|
||||
val CONST_MODIFIER: PositioningStrategy<KtModifierListOwner> = modifierSetPosition(KtTokens.CONST_KEYWORD)
|
||||
@@ -414,11 +414,29 @@ object PositioningStrategies {
|
||||
return markElement(modifier)
|
||||
}
|
||||
}
|
||||
|
||||
throw IllegalStateException("None of the modifiers is found: " + listOf(*tokens))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun projectionPosition(): PositioningStrategy<KtModifierListOwner> {
|
||||
return object : PositioningStrategy<KtModifierListOwner>() {
|
||||
override fun mark(element: KtModifierListOwner): List<TextRange> {
|
||||
if (element is KtTypeProjection && element.projectionKind == KtProjectionKind.STAR) {
|
||||
return markElement(element)
|
||||
}
|
||||
|
||||
val modifierList = element.modifierList.sure { "No modifier list, but modifier has been found by the analyzer" }
|
||||
modifierList.getModifier(KtTokens.IN_KEYWORD)?.let { return markElement(it) }
|
||||
modifierList.getModifier(KtTokens.OUT_KEYWORD)?.let { return markElement(it) }
|
||||
|
||||
throw IllegalStateException("None of the modifiers is found: in, out")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@JvmField
|
||||
val ARRAY_ACCESS: PositioningStrategy<KtArrayAccessExpression> = object : PositioningStrategy<KtArrayAccessExpression>() {
|
||||
override fun mark(element: KtArrayAccessExpression): List<TextRange> {
|
||||
|
||||
Reference in New Issue
Block a user