[FIR] Introduce ConeFunctionalTypeKind as a replacement of FunctionClassKind
This is needed to provide an ability to extend different kinds of functional types Also, cleanup and rename utilities related to functional types to avoid possible confusions
This commit is contained in:
committed by
Space Team
parent
c98c8d3682
commit
c86495dcae
+8
-1
@@ -33,7 +33,14 @@ internal class KtFirTypeInfoProvider(
|
||||
|
||||
override fun getFunctionClassKind(type: KtType): FunctionClassKind? {
|
||||
val coneType = (type as KtFirType).coneType
|
||||
return coneType.functionClassKind(analysisSession.useSiteSession)
|
||||
return when (coneType.functionalTypeKind(analysisSession.useSiteSession)) {
|
||||
ConeFunctionalTypeKind.Function -> FunctionClassKind.Function
|
||||
ConeFunctionalTypeKind.KFunction -> FunctionClassKind.KFunction
|
||||
ConeFunctionalTypeKind.SuspendFunction -> FunctionClassKind.SuspendFunction
|
||||
ConeFunctionalTypeKind.KSuspendFunction -> FunctionClassKind.KSuspendFunction
|
||||
null -> null
|
||||
else -> null // TODO: consider handling of custom functional type kinds from plugins
|
||||
}
|
||||
}
|
||||
|
||||
override fun canBeNull(type: KtType): Boolean = (type as KtFirType).coneType.canBeNull
|
||||
|
||||
+3
-2
@@ -49,9 +49,10 @@ internal class KtFirFunctionalType(
|
||||
|
||||
override val nullability: KtTypeNullability get() = withValidityAssertion { coneType.nullability.asKtNullability() }
|
||||
|
||||
override val isSuspend: Boolean get() = withValidityAssertion { coneType.isSuspendOrKSuspendFunctionType(builder.rootSession) }
|
||||
override val isSuspend: Boolean get() = withValidityAssertion { coneType.isSuspendFunctionType(builder.rootSession) }
|
||||
|
||||
override val isReflectType: Boolean get() = withValidityAssertion { coneType.isKFunctionType(builder.rootSession) }
|
||||
override val isReflectType: Boolean
|
||||
get() = withValidityAssertion { coneType.functionalTypeKind(builder.rootSession)?.isReflectType == true }
|
||||
|
||||
override val arity: Int
|
||||
get() = withValidityAssertion {
|
||||
|
||||
Reference in New Issue
Block a user