From 148c90dd1ea166982dcccd8850adbe1444b04904 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Fri, 11 Jun 2021 13:37:18 +0200 Subject: [PATCH] FIR IDE: do not make KtTypeArgumentWithVariance abstract As it does not require specific FIR implementation --- .../idea/fir/fe10/KtSymbolBasedKotlinTypes.kt | 2 +- .../kotlin/idea/frontend/api/KtTypeArgument.kt | 15 +++++++++------ .../idea/frontend/api/fir/KtSymbolByFirBuilder.kt | 7 ++++--- .../idea/frontend/api/fir/types/FirKtType.kt | 6 ------ 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/idea/idea-fir-fe10-binding/src/org/jetbrains/kotlin/idea/fir/fe10/KtSymbolBasedKotlinTypes.kt b/idea/idea-fir-fe10-binding/src/org/jetbrains/kotlin/idea/fir/fe10/KtSymbolBasedKotlinTypes.kt index 1a30efbc8d0..e250df82895 100644 --- a/idea/idea-fir-fe10-binding/src/org/jetbrains/kotlin/idea/fir/fe10/KtSymbolBasedKotlinTypes.kt +++ b/idea/idea-fir-fe10-binding/src/org/jetbrains/kotlin/idea/fir/fe10/KtSymbolBasedKotlinTypes.kt @@ -105,7 +105,7 @@ fun KtTypeAndAnnotations.toKotlinType(context: FE10BindingContext): UnwrappedTyp fun KtTypeArgument.toTypeProjection(context: FE10BindingContext): TypeProjection = when (this) { - KtStarProjectionTypeArgument -> StarProjectionForAbsentTypeParameter(context.builtIns) + is KtStarProjectionTypeArgument -> StarProjectionForAbsentTypeParameter(context.builtIns) is KtTypeArgumentWithVariance -> TypeProjectionImpl(variance, type.toKotlinType(context)) } diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtTypeArgument.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtTypeArgument.kt index 71c3f693e6b..fed8f46540e 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtTypeArgument.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/KtTypeArgument.kt @@ -5,14 +5,17 @@ package org.jetbrains.kotlin.idea.frontend.api +import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityToken import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.types.Variance -sealed class KtTypeArgument +sealed class KtTypeArgument : ValidityTokenOwner -object KtStarProjectionTypeArgument : KtTypeArgument() +class KtStarProjectionTypeArgument(override val token: ValidityToken) : KtTypeArgument() + +class KtTypeArgumentWithVariance( + val type: KtType, + val variance: Variance, + override val token: ValidityToken, +) : KtTypeArgument() -abstract class KtTypeArgumentWithVariance : KtTypeArgument() { - abstract val type: KtType - abstract val variance: Variance -} diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt index 700d3c3c388..12598aafae2 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt @@ -336,10 +336,11 @@ internal class KtSymbolByFirBuilder private constructor( } fun buildTypeArgument(coneType: ConeTypeProjection): KtTypeArgument = when (coneType) { - is ConeStarProjection -> KtStarProjectionTypeArgument - is ConeKotlinTypeProjection -> KtFirTypeArgumentWithVariance( + is ConeStarProjection -> KtStarProjectionTypeArgument(token) + is ConeKotlinTypeProjection -> KtTypeArgumentWithVariance( buildKtType(coneType.type), - coneType.kind.toVariance() + coneType.kind.toVariance(), + token, ) } diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/FirKtType.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/FirKtType.kt index d9bba859f42..093f024b540 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/FirKtType.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/frontend/api/fir/types/FirKtType.kt @@ -18,7 +18,6 @@ import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityToken import org.jetbrains.kotlin.idea.frontend.api.types.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.types.Variance internal interface KtFirType : ValidityTokenOwner { val coneType: ConeKotlinType @@ -171,8 +170,3 @@ internal class KtFirIntersectionType( override fun asStringForDebugging(): String = withValidityAssertion { coneType.render() } } - -internal class KtFirTypeArgumentWithVariance( - override val type: KtType, - override val variance: Variance -) : KtTypeArgumentWithVariance() \ No newline at end of file