diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt index 4c14c018cbb..37043f3a736 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/PhaseUtils.kt @@ -64,15 +64,17 @@ fun AbstractFirBasedSymbol<*>.ensureResolvedForCalls( fun ConeKotlinType.ensureResolvedTypeDeclaration( useSiteSession: FirSession, + requiredPhase: FirResolvePhase = FirResolvePhase.DECLARATIONS, ) { if (this !is ConeClassLikeType) return - lookupTag.toSymbol(useSiteSession)?.ensureResolved(FirResolvePhase.DECLARATIONS, useSiteSession) - fullyExpandedType(useSiteSession).lookupTag.toSymbol(useSiteSession)?.ensureResolved(FirResolvePhase.DECLARATIONS, useSiteSession) + lookupTag.toSymbol(useSiteSession)?.ensureResolved(requiredPhase, useSiteSession) + fullyExpandedType(useSiteSession).lookupTag.toSymbol(useSiteSession)?.ensureResolved(requiredPhase, useSiteSession) } fun FirTypeRef.ensureResolvedTypeDeclaration( useSiteSession: FirSession, + requiredPhase: FirResolvePhase = FirResolvePhase.DECLARATIONS, ) { - coneTypeSafe()?.ensureResolvedTypeDeclaration(useSiteSession) + coneTypeSafe()?.ensureResolvedTypeDeclaration(useSiteSession, requiredPhase) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt index 60768a25694..4a6a73a1129 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirStandardOverrideChecker.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolved +import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedTypeDeclaration import org.jetbrains.kotlin.fir.typeContext import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.types.AbstractTypeChecker @@ -53,8 +54,11 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO else -> this } - fun isEqualTypes(candidateTypeRef: FirTypeRef, baseTypeRef: FirTypeRef, substitutor: ConeSubstitutor) = - isEqualTypes(candidateTypeRef.coneType, baseTypeRef.coneType, substitutor) + fun isEqualTypes(candidateTypeRef: FirTypeRef, baseTypeRef: FirTypeRef, substitutor: ConeSubstitutor): Boolean { + candidateTypeRef.ensureResolvedTypeDeclaration(session, requiredPhase = FirResolvePhase.TYPES) + baseTypeRef.ensureResolvedTypeDeclaration(session, requiredPhase = FirResolvePhase.TYPES) + return isEqualTypes(candidateTypeRef.coneType, baseTypeRef.coneType, substitutor) + } /**