FIR: simplify companion scope building for implicit dispatch receiver
This commit is contained in:
@@ -8,15 +8,11 @@ package org.jetbrains.kotlin.fir.resolve.calls
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner
|
||||
import org.jetbrains.kotlin.fir.declarations.classId
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.impl.FirThisReceiverExpressionImpl
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirImplicitThisReference
|
||||
import org.jetbrains.kotlin.fir.renderWithType
|
||||
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
|
||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||
import org.jetbrains.kotlin.fir.resolve.buildDefaultUseSiteMemberScope
|
||||
import org.jetbrains.kotlin.fir.resolve.scope
|
||||
import org.jetbrains.kotlin.fir.resolve.*
|
||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
@@ -90,18 +86,11 @@ abstract class ImplicitReceiverValue<S : AbstractFirBasedSymbol<*>>(
|
||||
class ImplicitDispatchReceiverValue(
|
||||
boundSymbol: FirClassSymbol<*>,
|
||||
type: ConeKotlinType,
|
||||
symbolProvider: FirSymbolProvider,
|
||||
useSiteSession: FirSession,
|
||||
scopeSession: ScopeSession
|
||||
) : ImplicitReceiverValue<FirClassSymbol<*>>(boundSymbol, type, useSiteSession, scopeSession) {
|
||||
val implicitCompanionScope: FirScope? = (boundSymbol.fir as? FirRegularClass)?.companionObject?.let { companionObject ->
|
||||
val companionId = companionObject.classId
|
||||
if (companionId.isLocal) {
|
||||
companionObject.buildDefaultUseSiteMemberScope(useSiteSession, scopeSession)
|
||||
} else {
|
||||
symbolProvider.getClassUseSiteMemberScope(companionId, useSiteSession, scopeSession)
|
||||
}
|
||||
}
|
||||
val implicitCompanionScope: FirScope? =
|
||||
(boundSymbol.fir as? FirRegularClass)?.companionObject?.buildUseSiteMemberScope(useSiteSession, scopeSession)
|
||||
}
|
||||
|
||||
class ImplicitExtensionReceiverValue(
|
||||
|
||||
+1
-1
@@ -355,7 +355,7 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer)
|
||||
): T {
|
||||
val implicitReceiverValue = when (owner) {
|
||||
is FirClass<*> -> {
|
||||
ImplicitDispatchReceiverValue(owner.symbol, type, symbolProvider, session, scopeSession)
|
||||
ImplicitDispatchReceiverValue(owner.symbol, type, session, scopeSession)
|
||||
}
|
||||
is FirFunction<*> -> {
|
||||
ImplicitExtensionReceiverValue(owner.symbol, type, session, scopeSession)
|
||||
|
||||
Reference in New Issue
Block a user