FIR: make KFunctionX derived from KFunction

This commit is contained in:
Mikhail Glukhikh
2020-04-16 16:21:01 +03:00
parent 4bb6410ce3
commit 96d8b0bea3
25 changed files with 27 additions and 39 deletions
@@ -48,6 +48,7 @@ object StandardClassIds {
val KMutableProperty1 = "KMutableProperty1".reflectId()
val KProperty2 = "KProperty2".reflectId()
val KMutableProperty2 = "KMutableProperty2".reflectId()
val KFunction = "KFunction".reflectId()
val Comparable = "Comparable".baseId()
val Number = "Number".baseId()
@@ -227,20 +227,28 @@ class FirBuiltinSymbolProvider(val session: FirSession, val kotlinScopeProvider:
}
superTypeRefs += when (kind) {
FunctionClassDescriptor.Kind.Function ->
FunctionClassDescriptor.Kind.Function -> listOf(
buildResolvedTypeRef {
type = ConeClassLikeLookupTagImpl(StandardClassIds.Function)
.constructClassType(arrayOf(typeArguments.last().type), isNullable = false)
}
)
FunctionClassDescriptor.Kind.SuspendFunction ->
FunctionClassDescriptor.Kind.SuspendFunction -> listOf(
session.builtinTypes.anyType
)
FunctionClassDescriptor.Kind.KFunction ->
FunctionClassDescriptor.Kind.KFunction -> listOf(
buildResolvedTypeRef {
type = ConeClassLikeLookupTagImpl(StandardClassIds.KFunction)
.constructClassType(arrayOf(typeArguments.last().type), isNullable = false)
},
createSuperType(FunctionClassDescriptor.Kind.Function)
)
FunctionClassDescriptor.Kind.KSuspendFunction ->
FunctionClassDescriptor.Kind.KSuspendFunction -> listOf(
createSuperType(FunctionClassDescriptor.Kind.SuspendFunction)
)
}
addDeclaration(
buildSimpleFunction {