From 475671563bd020c8ae8db96fb0626a162d9030d1 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Fri, 15 May 2020 12:04:38 +0300 Subject: [PATCH] FIR: Get rid of obsolete local scopes optimizations They are already filtered out (see FirTowerResolverSession#localScopes initializer) --- .../calls/tower/FirTowerResolverSession.kt | 37 ++++++------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolverSession.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolverSession.kt index 65ff138bd23..e8e22b635fa 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolverSession.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/tower/FirTowerResolverSession.kt @@ -231,19 +231,15 @@ class FirTowerResolverSession internal constructor( info: CallInfo ) { processExtensionsThatHideMembers(info, explicitReceiverValue = null) - val nonEmptyLocalScopes = mutableListOf() val emptyTopLevelScopes = mutableSetOf() val implicitReceiverValuesWithEmptyScopes = mutableSetOf>() enumerateTowerLevels( onLocalScope = { index, scope -> - val result = processLevel( + processLevel( scope.toScopeTowerLevel(), info, TowerGroup.Local(index) ) - if (result != ProcessorAction.NONE) { - nonEmptyLocalScopes += scope - } }, onNonLocalScope = l@{ index, scope -> // NB: this check does not work for variables @@ -260,7 +256,6 @@ class FirTowerResolverSession internal constructor( info, TowerGroup.Implicit(index), implicitReceiverValuesWithEmptyScopes, - nonEmptyLocalScopes, emptyTopLevelScopes ) } @@ -315,7 +310,6 @@ class FirTowerResolverSession internal constructor( info: CallInfo, parentGroup: TowerGroup, implicitReceiverValuesWithEmptyScopes: MutableSet>, - nonEmptyLocalScopes: List, emptyTopLevelScopes: MutableSet ) { val implicitResult = processLevel( @@ -327,7 +321,6 @@ class FirTowerResolverSession internal constructor( } enumerateTowerLevels( - localScopesToUse = nonEmptyLocalScopes, onLocalScope = { index, scope -> processLevel( scope.toScopeTowerLevel(extensionReceiver = receiver), @@ -377,19 +370,14 @@ class FirTowerResolverSession internal constructor( return } - val nonEmptyLocalScopes = mutableListOf() - enumerateTowerLevels( onLocalScope = { index, scope -> - if (processScopeForExplicitReceiver( - scope, - explicitReceiverValue, - info, - TowerGroup.Local(index) - ) != ProcessorAction.NONE - ) { - nonEmptyLocalScopes += scope - } + processScopeForExplicitReceiver( + scope, + explicitReceiverValue, + info, + TowerGroup.Local(index) + ) }, onNonLocalScope = { index, scope -> processScopeForExplicitReceiver( @@ -400,7 +388,7 @@ class FirTowerResolverSession internal constructor( ) }, onImplicitReceiver = { index, implicitReceiverValue -> - processCombinationOfReceivers(implicitReceiverValue, explicitReceiverValue, info, index, nonEmptyLocalScopes) + processCombinationOfReceivers(implicitReceiverValue, explicitReceiverValue, info, index) } ) } @@ -408,10 +396,9 @@ class FirTowerResolverSession internal constructor( private inline fun enumerateTowerLevels( onLocalScope: (Int, FirScope) -> Unit, onNonLocalScope: (Int, FirScope) -> Unit, - onImplicitReceiver: (Int, ImplicitReceiverValue<*>) -> Unit, - localScopesToUse: List = localScopes + onImplicitReceiver: (Int, ImplicitReceiverValue<*>) -> Unit ) { - for ((index, localScope) in localScopesToUse.withIndex()) { + for ((index, localScope) in localScopes.withIndex()) { onLocalScope(index, localScope) } @@ -448,8 +435,7 @@ class FirTowerResolverSession internal constructor( implicitReceiverValue: ImplicitReceiverValue<*>, explicitReceiverValue: ExpressionReceiverValue, info: CallInfo, - depth: Int, - nonEmptyLocalScopes: MutableList + depth: Int ) { // NB: companions are processed via implicitReceiverValues! val parentGroup = TowerGroup.Implicit(depth) @@ -465,7 +451,6 @@ class FirTowerResolverSession internal constructor( ) enumerateTowerLevels( - localScopesToUse = nonEmptyLocalScopes, onLocalScope = { index, scope -> processLevelForPropertyWithInvoke( scope.toScopeTowerLevel(extensionReceiver = implicitReceiverValue),