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,