diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/BodyResolveComponents.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/BodyResolveComponents.kt index ceaa22bd661..043bef90199 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/BodyResolveComponents.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/BodyResolveComponents.kt @@ -11,7 +11,10 @@ import org.jetbrains.kotlin.fir.FirCallResolver import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSymbolOwner import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.resolve.calls.* +import org.jetbrains.kotlin.fir.resolve.calls.ImplicitDispatchReceiverValue +import org.jetbrains.kotlin.fir.resolve.calls.ImplicitExtensionReceiverValue +import org.jetbrains.kotlin.fir.resolve.calls.ImplicitReceiverValue +import org.jetbrains.kotlin.fir.resolve.calls.ResolutionStageRunner import org.jetbrains.kotlin.fir.resolve.dfa.FirDataFlowAnalyzer import org.jetbrains.kotlin.fir.resolve.inference.FirCallCompleter import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents @@ -179,7 +182,7 @@ fun SessionHolder.collectTowerDataElementsForClass(owner: FirClass<*>, defaultTy val companionObject = (owner as? FirRegularClass)?.companionObject val companionReceiver = companionObject?.let { companion -> ImplicitDispatchReceiverValue( - companion.symbol, session, scopeSession, kind = ImplicitDispatchReceiverKind.COMPANION + companion.symbol, session, scopeSession ) } allImplicitCompanionValues.addIfNotNull(companionReceiver) @@ -192,7 +195,7 @@ fun SessionHolder.collectTowerDataElementsForClass(owner: FirClass<*>, defaultTy (superClass as? FirRegularClass)?.companionObject?.let { companion -> val superCompanionReceiver = ImplicitDispatchReceiverValue( - companion.symbol, session, scopeSession, kind = ImplicitDispatchReceiverKind.COMPANION_FROM_SUPERTYPE + companion.symbol, session, scopeSession ) superClassesStaticsAndCompanionReceivers += superCompanionReceiver.asTowerDataElement() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt index f5c3d5e8892..da12fdcd058 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/FirReceivers.kt @@ -6,10 +6,7 @@ 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.FirTypeParameterRefsOwner -import org.jetbrains.kotlin.fir.declarations.FirTypeParametersOwner -import org.jetbrains.kotlin.fir.declarations.expandedConeType import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirThisReceiverExpression import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionWithSmartcast @@ -21,15 +18,12 @@ import org.jetbrains.kotlin.fir.resolve.constructType import org.jetbrains.kotlin.fir.resolve.scope import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype import org.jetbrains.kotlin.fir.scopes.FirScope -import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirTypeAliasSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl -import org.jetbrains.kotlin.name.ClassId interface Receiver { @@ -119,35 +113,18 @@ sealed class ImplicitReceiverValue>( } } -internal enum class ImplicitDispatchReceiverKind { - REGULAR, - REGULAR_IN_DELEGATED, - COMPANION, - COMPANION_FROM_SUPERTYPE -} - class ImplicitDispatchReceiverValue internal constructor( boundSymbol: FirClassSymbol<*>, type: ConeKotlinType, useSiteSession: FirSession, - scopeSession: ScopeSession, - private val kind: ImplicitDispatchReceiverKind = ImplicitDispatchReceiverKind.REGULAR + scopeSession: ScopeSession ) : ImplicitReceiverValue>(boundSymbol, type, useSiteSession, scopeSession) { internal constructor( - boundSymbol: FirClassSymbol<*>, useSiteSession: FirSession, scopeSession: ScopeSession, kind: ImplicitDispatchReceiverKind + boundSymbol: FirClassSymbol<*>, useSiteSession: FirSession, scopeSession: ScopeSession ) : this( boundSymbol, boundSymbol.constructType(typeArguments = emptyArray(), isNullable = false), - useSiteSession, scopeSession, kind + useSiteSession, scopeSession ) - - fun copyForDelegated(): ImplicitDispatchReceiverValue = - ImplicitDispatchReceiverValue(boundSymbol, type, useSiteSession, scopeSession, ImplicitDispatchReceiverKind.REGULAR_IN_DELEGATED) - - val inDelegated: Boolean get() = kind == ImplicitDispatchReceiverKind.REGULAR_IN_DELEGATED - - val implicitCompanion: Boolean get() = kind != ImplicitDispatchReceiverKind.REGULAR - - val companionFromSupertype: Boolean get() = kind == ImplicitDispatchReceiverKind.COMPANION_FROM_SUPERTYPE } class ImplicitExtensionReceiverValue(