diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt index c425a1802ff..8138508298a 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/ScopeUtils.kt @@ -47,7 +47,7 @@ fun FirSmartCastExpression.smartcastScope( fun ConeClassLikeType.delegatingConstructorScope( useSiteSession: FirSession, scopeSession: ScopeSession, - derivedClassLookupTag: ConeClassLikeLookupTag? + derivedClassLookupTag: ConeClassLikeLookupTag ): FirTypeScope? { return classScope(useSiteSession, scopeSession, FirResolvePhase.DECLARATIONS, derivedClassLookupTag) } @@ -65,7 +65,7 @@ fun ConeKotlinType.scope( private fun ConeKotlinType.scope(useSiteSession: FirSession, scopeSession: ScopeSession, requiredPhase: FirResolvePhase): FirTypeScope? { return when (this) { is ConeErrorType -> null - is ConeClassLikeType -> classScope(useSiteSession, scopeSession, requiredPhase, derivedClassLookupTag = null) + is ConeClassLikeType -> classScope(useSiteSession, scopeSession, requiredPhase, lookupTag) is ConeTypeParameterType -> { val symbol = lookupTag.symbol scopeSession.getOrBuild(symbol, TYPE_PARAMETER_SCOPE_KEY) { @@ -100,7 +100,7 @@ private fun ConeClassLikeType.classScope( useSiteSession: FirSession, scopeSession: ScopeSession, requiredPhase: FirResolvePhase, - derivedClassLookupTag: ConeClassLikeLookupTag? + memberOwnerLookupTag: ConeClassLikeLookupTag ): FirTypeScope? { val fullyExpandedType = fullyExpandedType(useSiteSession) val fir = fullyExpandedType.lookupTag.toSymbol(useSiteSession)?.fir as? FirClass ?: return null @@ -115,7 +115,7 @@ private fun ConeClassLikeType.classScope( ) } - return fir.scopeForClass(substitutor, useSiteSession, scopeSession, derivedClassLookupTag) + return fir.scopeForClass(substitutor, useSiteSession, scopeSession, memberOwnerLookupTag) } private fun ConeClassLikeType.obtainFirOfClass(useSiteSession: FirSession, requiredPhase: FirResolvePhase): FirClass? { diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt index aea9a8a0ab9..bda389281b2 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/FirKotlinScopeProvider.kt @@ -111,14 +111,14 @@ fun FirClass.scopeForClass( substitutor: ConeSubstitutor, useSiteSession: FirSession, scopeSession: ScopeSession, - derivedClassLookupTag: ConeClassLikeLookupTag? + memberOwnerLookupTag: ConeClassLikeLookupTag ): FirTypeScope = scopeForClassImpl( substitutor, useSiteSession, scopeSession, skipPrivateMembers = false, classFirDispatchReceiver = this, // TODO: why it's always false? isFromExpectClass = false, - derivedClassLookupTag = derivedClassLookupTag + memberOwnerLookupTag = memberOwnerLookupTag ) fun ConeKotlinType.scopeForSupertype( @@ -143,7 +143,7 @@ fun ConeKotlinType.scopeForSupertype( skipPrivateMembers = true, classFirDispatchReceiver = derivedClass, isFromExpectClass = (derivedClass as? FirRegularClass)?.isExpect == true, - derivedClassLookupTag = derivedClass.symbol.toLookupTag() + memberOwnerLookupTag = derivedClass.symbol.toLookupTag() ) } @@ -160,7 +160,7 @@ private fun FirClass.scopeForClassImpl( skipPrivateMembers: Boolean, classFirDispatchReceiver: FirClass, isFromExpectClass: Boolean, - derivedClassLookupTag: ConeClassLikeLookupTag? + memberOwnerLookupTag: ConeClassLikeLookupTag? ): FirTypeScope { val basicScope = unsubstitutedScope(useSiteSession, scopeSession, withForcedTypeCalculator = false) if (substitutor == ConeSubstitutor.Empty) return basicScope @@ -169,7 +169,7 @@ private fun FirClass.scopeForClassImpl( classFirDispatchReceiver.symbol.toLookupTag(), isFromExpectClass, substitutor, - derivedClassLookupTag + memberOwnerLookupTag ) return scopeSession.getOrBuild(this, key) { @@ -180,7 +180,7 @@ private fun FirClass.scopeForClassImpl( substitutor.substituteOrSelf(classFirDispatchReceiver.defaultType()).lowerBoundIfFlexible() as ConeClassLikeType, skipPrivateMembers, makeExpect = isFromExpectClass, - derivedClassLookupTag ?: classFirDispatchReceiver.symbol.toLookupTag() + memberOwnerLookupTag ?: classFirDispatchReceiver.symbol.toLookupTag() ) } } diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt index a7a5fa26adf..f3fd8d211ae 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirDelegatedMemberScope.kt @@ -92,7 +92,7 @@ class FirDelegatedMemberScope( functionSymbol.callableId, ), original, - derivedClassLookupTag = null, + derivedClassLookupTag = dispatchReceiverType.lookupTag, session, FirDeclarationOrigin.Delegated, newDispatchReceiverType = dispatchReceiverType, @@ -162,7 +162,7 @@ class FirDelegatedMemberScope( propertySymbol.callableId ), original, - derivedClassLookupTag = null, + derivedClassLookupTag = dispatchReceiverType.lookupTag, session, FirDeclarationOrigin.Delegated, newModality = Modality.OPEN, diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt index 699b28d12ae..190ef498887 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/scopes/impl/FirTypeIntersectionScopeContext.kt @@ -361,9 +361,8 @@ class FirTypeIntersectionScopeContext( ) val newSymbol = FirIntersectionOverrideFunctionSymbol(callableId, overrides) FirFakeOverrideGenerator.createCopyForFirFunction( - newSymbol, keyFir, - derivedClassLookupTag = null, - session, FirDeclarationOrigin.IntersectionOverride, keyFir.isExpect, + newSymbol, keyFir, derivedClassLookupTag = null, session, + FirDeclarationOrigin.IntersectionOverride, keyFir.isExpect, newModality = newModality, newVisibility = newVisibility, newDispatchReceiverType = dispatchReceiverType, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirDefaultParametersResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirDefaultParametersResolver.kt index 24675417649..03b230c4a1a 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirDefaultParametersResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/FirDefaultParametersResolver.kt @@ -31,7 +31,12 @@ class FirDefaultParametersResolver : FirSessionComponent { // imported from object case is FirAbstractImportingScope -> { val containingClass = function.getContainingClass(session) ?: return false - containingClass.scopeForClass(ConeSubstitutor.Empty, session, scopeSession, derivedClassLookupTag = null) + containingClass.scopeForClass( + ConeSubstitutor.Empty, + session, + scopeSession, + containingClass.symbol.toLookupTag() + ) } else -> return false } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt index 0b63b809261..9dd3c82321e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ConstructorProcessing.kt @@ -269,7 +269,7 @@ private fun processConstructors( substitutor, session, bodyResolveComponents.scopeSession, - derivedClassLookupTag = null + firClass.symbol.toLookupTag() ) } }