[FIR] Extract extension functional type from an annotated functional type during deserialization

^KT-57140 Fixed
This commit is contained in:
Dmitriy Novozhilov
2023-03-22 11:27:31 +02:00
committed by Space Team
parent 8ca7b32577
commit 336b6ba9f0
6 changed files with 67 additions and 23 deletions
@@ -9,7 +9,9 @@ import org.jetbrains.kotlin.builtins.functions.FunctionTypeKind
import org.jetbrains.kotlin.builtins.functions.FunctionTypeKindExtractor
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionComponent
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
abstract class FirFunctionTypeKindService : FirSessionComponent {
@@ -36,6 +38,7 @@ abstract class FirFunctionTypeKindService : FirSessionComponent {
abstract fun extractSingleSpecialKindForFunction(functionSymbol: FirFunctionSymbol<*>): FunctionTypeKind?
abstract fun extractAllSpecialKindsForFunction(functionSymbol: FirFunctionSymbol<*>): List<FunctionTypeKind>
abstract fun extractAllSpecialKindsForFunctionTypeRef(typeRef: FirFunctionTypeRef): List<FunctionTypeKind>
abstract fun extractSingleExtensionKindForDeserializedConeType(classId: ClassId, annotations: List<FirAnnotation>): FunctionTypeKind?
}
val FirSession.functionTypeService: FirFunctionTypeKindService by FirSession.sessionComponentAccessor()