From 46f987ba798ab8711c36b93488f8c77b19b6ee10 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Sun, 7 May 2023 16:23:18 +0200 Subject: [PATCH] [LL FIR] do not try to access supertypeRefs for classes during super types phase We should try to find supe type refs in a session firstly, otherwise we can try to access by getResolvedSuperTypeRefsForOutOfSessionDeclaration ^KT-56550 --- .../fir/resolve/transformers/FirSupertypesResolution.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt index 752756b051b..54217969b40 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSupertypesResolution.kt @@ -559,10 +559,9 @@ open class SupertypeComputationSession { val supertypesSupplier: SupertypeSupplier = object : SupertypeSupplier() { override fun forClass(firClass: FirClass, useSiteSession: FirSession): List { - if (firClass.superTypeRefs.all { it is FirResolvedTypeRef }) return firClass.superConeTypes - return (getSupertypesComputationStatus(firClass) as? SupertypeComputationStatus.Computed)?.supertypeRefs?.mapNotNull { - it.coneTypeSafe() - }.orEmpty() + val typeRefsFromSession = (getSupertypesComputationStatus(firClass) as? SupertypeComputationStatus.Computed)?.supertypeRefs + val typeRefsToReturn = typeRefsFromSession ?: getResolvedSuperTypeRefsForOutOfSessionDeclaration(firClass) + return typeRefsToReturn?.mapNotNull { it.coneTypeSafe() }.orEmpty() } override fun expansionForTypeAlias(typeAlias: FirTypeAlias, useSiteSession: FirSession): ConeClassLikeType? {