FIR: Support function type resolve #KT-24092 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
0ea1a5b30f
commit
4fb321fa00
+8
-1
@@ -105,7 +105,14 @@ class FirTypeResolverImpl : FirTypeResolver {
|
||||
is FirErrorType -> {
|
||||
ConeKotlinErrorType(type.reason)
|
||||
}
|
||||
is FirFunctionType, is FirDynamicType, is FirImplicitType, is FirDelegatedType -> {
|
||||
is FirFunctionType -> {
|
||||
ConeFunctionTypeImpl(
|
||||
(type.receiverType as FirResolvedType?)?.type,
|
||||
type.valueParameters.map { it.returnType.coneTypeUnsafe<ConeKotlinType>() },
|
||||
type.returnType.coneTypeUnsafe()
|
||||
)
|
||||
}
|
||||
is FirDynamicType, is FirImplicitType, is FirDelegatedType -> {
|
||||
ConeKotlinErrorType("Not supported: ${type::class.simpleName}")
|
||||
}
|
||||
else -> error("!")
|
||||
|
||||
+14
-1
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.resolve.transformers
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.FirElement
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||
import org.jetbrains.kotlin.fir.render
|
||||
import org.jetbrains.kotlin.fir.resolve.FirProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.FirTypeResolver
|
||||
@@ -16,6 +17,7 @@ import org.jetbrains.kotlin.fir.scopes.impl.*
|
||||
import org.jetbrains.kotlin.fir.symbols.*
|
||||
import org.jetbrains.kotlin.fir.transformSingle
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedFunctionTypeImpl
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeImpl
|
||||
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
@@ -114,7 +116,18 @@ open class FirTypeResolveTransformer : FirTransformer<Nothing?>() {
|
||||
}
|
||||
|
||||
override fun transformFunctionType(functionType: FirFunctionType, data: Nothing?): CompositeTransformResult<FirType> {
|
||||
return (functionType.transformChildren(this, data) as FirType).compose()
|
||||
val typeResolver = FirTypeResolver.getInstance(functionType.session)
|
||||
functionType.transformChildren(this, data)
|
||||
return FirResolvedFunctionTypeImpl(
|
||||
functionType.psi,
|
||||
functionType.session,
|
||||
functionType.isNullable,
|
||||
functionType.annotations as MutableList<FirAnnotationCall>,
|
||||
functionType.receiverType,
|
||||
functionType.valueParameters as MutableList<FirValueParameter>,
|
||||
functionType.returnType,
|
||||
typeResolver.resolveType(functionType, scope, FirPosition.OTHER)
|
||||
).compose()
|
||||
}
|
||||
|
||||
private fun transformType(type: FirType, resolvedType: ConeKotlinType): CompositeTransformResult<FirType> {
|
||||
|
||||
Reference in New Issue
Block a user