diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt index f99b51b8620..dc676fd8c74 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/KotlinScopeProvider.kt @@ -13,12 +13,12 @@ import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap import org.jetbrains.kotlin.fir.scopes.impl.* import org.jetbrains.kotlin.fir.symbols.CallableId +import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol import org.jetbrains.kotlin.fir.types.ConeClassErrorType import org.jetbrains.kotlin.fir.types.ConeClassLikeType import org.jetbrains.kotlin.fir.types.ConeKotlinType import org.jetbrains.kotlin.fir.types.coneType -import org.jetbrains.kotlin.name.ClassId class KotlinScopeProvider( val declaredMemberScopeDecorator: ( @@ -72,7 +72,7 @@ class KotlinScopeProvider( data class ConeSubstitutionScopeKey( - val classId: ClassId?, val isFromExpectClass: Boolean, val substitutor: ConeSubstitutor + val lookupTag: ConeClassLikeLookupTag, val isFromExpectClass: Boolean, val substitutor: ConeSubstitutor ) : ScopeSessionKey, FirClassSubstitutionScope>() data class DelegatedMemberScopeKey(val callableId: CallableId) : ScopeSessionKey() @@ -166,7 +166,7 @@ private fun FirClass<*>.scopeForClassImpl( if (substitutor == ConeSubstitutor.Empty) return basicScope return scopeSession.getOrBuild( - this, ConeSubstitutionScopeKey(classFirDispatchReceiver.classId, isFromExpectClass, substitutor) + this, ConeSubstitutionScopeKey(classFirDispatchReceiver.symbol.toLookupTag(), isFromExpectClass, substitutor) ) { FirClassSubstitutionScope( useSiteSession, basicScope, substitutor, classFirDispatchReceiver.defaultType(), diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/ConeClassLookupTagWithFixedSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/ConeClassLookupTagWithFixedSymbol.kt index f72b296dcd2..5d6b8a07cf8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/ConeClassLookupTagWithFixedSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/ConeClassLookupTagWithFixedSymbol.kt @@ -8,7 +8,22 @@ package org.jetbrains.kotlin.fir.symbols.impl import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.name.ClassId -data class ConeClassLookupTagWithFixedSymbol( +class ConeClassLookupTagWithFixedSymbol( override val classId: ClassId, val symbol: FirClassSymbol<*> -) : ConeClassLikeLookupTag() \ No newline at end of file +) : ConeClassLikeLookupTag() { + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as ConeClassLookupTagWithFixedSymbol + + if (symbol != other.symbol) return false + + return true + } + + override fun hashCode(): Int { + return symbol.hashCode() + } +}