FIR: Pass BodyResolveComponents to ScopeTowerLevel
This commit is contained in:
@@ -65,7 +65,7 @@ class CallResolver(
|
||||
for (scope in localScopes) {
|
||||
towerDataConsumer.consume(
|
||||
TowerDataKind.TOWER_LEVEL,
|
||||
ScopeTowerLevel(session, scope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
ScopeTowerLevel(session, components, scope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
group++
|
||||
)
|
||||
}
|
||||
@@ -84,7 +84,7 @@ class CallResolver(
|
||||
// }
|
||||
towerDataConsumer.consume(
|
||||
TowerDataKind.TOWER_LEVEL,
|
||||
ScopeTowerLevel(session, implicitScope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
ScopeTowerLevel(session, components, implicitScope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
group++
|
||||
)
|
||||
}
|
||||
@@ -98,7 +98,7 @@ class CallResolver(
|
||||
// }
|
||||
towerDataConsumer.consume(
|
||||
TowerDataKind.TOWER_LEVEL,
|
||||
ScopeTowerLevel(session, implicitCompanionScope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
ScopeTowerLevel(session, components, implicitCompanionScope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
group++
|
||||
)
|
||||
}
|
||||
@@ -138,7 +138,7 @@ class CallResolver(
|
||||
for (scope in topLevelScopes) {
|
||||
towerDataConsumer.consume(
|
||||
TowerDataKind.TOWER_LEVEL,
|
||||
ScopeTowerLevel(session, scope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
ScopeTowerLevel(session, components, scope, implicitExtensionReceiver = implicitReceiverValue),
|
||||
group++
|
||||
)
|
||||
}
|
||||
@@ -163,7 +163,7 @@ class CallResolver(
|
||||
// Member of local scope
|
||||
// fun test(x: Int) = x
|
||||
for (scope in localScopes) {
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, scope), group++)
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, components, scope), group++)
|
||||
}
|
||||
|
||||
var blockDispatchReceivers = false
|
||||
@@ -181,7 +181,7 @@ class CallResolver(
|
||||
// val x = 0
|
||||
// class Nested { val y = x }
|
||||
// }
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, implicitScope), group++)
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, components, implicitScope), group++)
|
||||
}
|
||||
if (implicitReceiverValue is ImplicitDispatchReceiverValue) {
|
||||
val implicitCompanionScope = implicitReceiverValue.implicitCompanionScope
|
||||
@@ -191,7 +191,7 @@ class CallResolver(
|
||||
// companion object { val x = 0 }
|
||||
// class Nested { val y = x }
|
||||
// }
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, implicitCompanionScope), group++)
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, components, implicitCompanionScope), group++)
|
||||
}
|
||||
if (!implicitReceiverValue.boundSymbol.fir.isInner) {
|
||||
blockDispatchReceivers = true
|
||||
@@ -203,7 +203,7 @@ class CallResolver(
|
||||
// val x = 0
|
||||
// fun test() { x }
|
||||
for (scope in topLevelScopes) {
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, scope), group++)
|
||||
towerDataConsumer.consume(TowerDataKind.TOWER_LEVEL, ScopeTowerLevel(session, components, scope), group++)
|
||||
}
|
||||
|
||||
return collector
|
||||
|
||||
@@ -151,6 +151,7 @@ class MemberScopeTowerLevel(
|
||||
// (if explicit receiver exists, it always *should* be an extension receiver)
|
||||
class ScopeTowerLevel(
|
||||
session: FirSession,
|
||||
val bodyResolveComponents: BodyResolveComponents,
|
||||
val scope: FirScope,
|
||||
val implicitExtensionReceiver: ImplicitReceiverValue<*>? = null
|
||||
) : SessionBasedTowerLevel(session) {
|
||||
@@ -187,7 +188,11 @@ class ScopeTowerLevel(
|
||||
ProcessorAction.NEXT
|
||||
}
|
||||
}
|
||||
TowerScopeLevel.Token.Functions -> scope.processFunctionsAndConstructorsByName(name, session, ScopeSession()) { candidate ->
|
||||
TowerScopeLevel.Token.Functions -> scope.processFunctionsAndConstructorsByName(
|
||||
name,
|
||||
session,
|
||||
bodyResolveComponents.scopeSession
|
||||
) { candidate ->
|
||||
if (candidate.hasConsistentReceivers(extensionReceiver)) {
|
||||
processor.consumeCandidate(
|
||||
candidate as T, dispatchReceiverValue = candidate.dispatchReceiverValue(),
|
||||
|
||||
Reference in New Issue
Block a user