[FE] Pass the derived class tag to more places (KTIJ-22808)
This commit is contained in:
@@ -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? {
|
||||
|
||||
+6
-6
@@ -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()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -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,
|
||||
|
||||
+2
-3
@@ -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,
|
||||
|
||||
+6
-1
@@ -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
|
||||
}
|
||||
|
||||
+1
-1
@@ -269,7 +269,7 @@ private fun processConstructors(
|
||||
substitutor,
|
||||
session,
|
||||
bodyResolveComponents.scopeSession,
|
||||
derivedClassLookupTag = null
|
||||
firClass.symbol.toLookupTag()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user