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