From 8177a70ff982948a7ae4c0ba4769f904370a54a7 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Wed, 9 Jun 2021 19:19:37 +0200 Subject: [PATCH] FIR IDE: introduce KtCapturedType --- .../jetbrains/kotlin/idea/frontend/api/types/KtType.kt | 2 ++ .../kotlin/idea/frontend/api/fir/KtSymbolByFirBuilder.kt | 1 + .../kotlin/idea/frontend/api/fir/types/FirKtType.kt | 9 +++++++++ 3 files changed, 12 insertions(+) diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/types/KtType.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/types/KtType.kt index 243481e8377..d0abbc15148 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/types/KtType.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/types/KtType.kt @@ -55,6 +55,8 @@ abstract class KtTypeParameterType : KtTypeWithNullability { abstract val symbol: KtTypeParameterSymbol } +abstract class KtCapturedType : KtType + abstract class KtFlexibleType : KtType { abstract val lowerBound: KtType abstract val upperBound: KtType 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 dd372526e53..bc598b8b5d2 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 @@ -320,6 +320,7 @@ internal class KtSymbolByFirBuilder private constructor( is ConeFlexibleType -> KtFirFlexibleType(coneType, token, this@KtSymbolByFirBuilder) is ConeIntersectionType -> KtFirIntersectionType(coneType, token, this@KtSymbolByFirBuilder) is ConeDefinitelyNotNullType -> buildKtType(coneType.original) + is ConeCapturedType -> KtFirCapturedType(coneType, token) else -> throwUnexpectedElementError(coneType) } } 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 b8feb8513dc..34f81a3e857 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 @@ -101,6 +101,15 @@ internal class KtFirClassErrorType( override fun asStringForDebugging(): String = withValidityAssertion { coneType.render() } } +internal class KtFirCapturedType( + coneType: ConeCapturedType, + override val token: ValidityToken, +) : KtCapturedType(), KtFirType { + override val coneType by weakRef(coneType) + override fun asStringForDebugging(): String = withValidityAssertion { coneType.render() } +} + + internal class KtFirTypeParameterType( coneType: ConeTypeParameterType, override val token: ValidityToken,