FIR IDE: introduce KtFunctionalType

This commit is contained in:
Ilya Kirillov
2021-02-02 12:47:50 +01:00
parent 0551834164
commit a10f54befa
9 changed files with 77 additions and 23 deletions
@@ -77,8 +77,6 @@ abstract class KtAnalysisSession(final override val token: ValidityToken) : Vali
fun PsiElement.getExpectedType(): KtType? = expressionTypeProvider.getExpectedType(this)
fun KtType.isBuiltInFunctionalType(): Boolean = typeProvider.isBuiltinFunctionalType(this)
val builtinTypes: KtBuiltinTypes get() = typeProvider.builtinTypes
fun KtClassOrObjectSymbol.buildSelfClassType(): KtType = typeProvider.buildSelfClassType(this)
@@ -5,14 +5,12 @@
package org.jetbrains.kotlin.idea.frontend.api.components
import org.jetbrains.kotlin.builtins.functions.FunctionClassKind
import org.jetbrains.kotlin.idea.frontend.api.ValidityTokenOwner
import org.jetbrains.kotlin.idea.frontend.api.symbols.KtClassOrObjectSymbol
import org.jetbrains.kotlin.idea.frontend.api.types.KtType
abstract class KtTypeProvider : KtAnalysisSessionComponent() {
//TODO get rid of it
abstract fun isBuiltinFunctionalType(type: KtType): Boolean
abstract val builtinTypes: KtBuiltinTypes
abstract fun buildSelfClassType(symbol: KtClassOrObjectSymbol): KtType
@@ -33,12 +33,22 @@ sealed class KtDenotableType : KtType {
abstract fun asString(): String
}
abstract class KtClassType : KtDenotableType(), KtTypeWithNullability {
sealed class KtClassType : KtDenotableType(), KtTypeWithNullability {
abstract val classId: ClassId
abstract val classSymbol: KtClassLikeSymbol
abstract val typeArguments: List<KtTypeArgument>
}
abstract class KtFunctionalType : KtClassType() {
abstract val isSuspend: Boolean
abstract val arity: Int
abstract val receiverType: KtType?
abstract val parameterTypes: List<KtType>
abstract val returnType: KtType
}
abstract class KtUsualClassType : KtClassType()
abstract class KtErrorType : KtType {
abstract val error: String
}