From 840ecf1a777fafc50c0f0472bf05110c45934b17 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 2 Oct 2019 14:00:16 +0300 Subject: [PATCH] Don't enter twice top-level scopes w/out particular name in FIR tower resolver --- .../kotlin/fir/resolve/calls/CallResolver.kt | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallResolver.kt index 3e3b0305ddc..8cfbd1829c8 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallResolver.kt @@ -134,19 +134,6 @@ class CallResolver( } } - // Top-level extensions via implicit receiver - // fun Foo.bar() {} - // class Foo { - // fun test() { bar() } - // } - for (scope in topLevelScopes) { - towerDataConsumer.consume( - TOWER_LEVEL, - ScopeTowerLevel(session, components, scope, implicitExtensionReceiver = implicitReceiverValue), - group++ - ) - } - return group } @@ -206,10 +193,25 @@ class CallResolver( } } - // Member of top-level scope & importing scope - // val x = 0 - // fun test() { x } - for (scope in topLevelScopes) { + topLevelScopeLoop@ for (scope in topLevelScopes) { + // Top-level extensions via implicit receiver + // fun Foo.bar() {} + // class Foo { + // fun test() { bar() } + // } + for (implicitReceiverValue in implicitReceiverValues) { + if (towerDataConsumer.consume( + TOWER_LEVEL, + ScopeTowerLevel(session, components, scope, implicitExtensionReceiver = implicitReceiverValue), + group++ + ) == NONE + ) { + continue@topLevelScopeLoop + } + } + // Member of top-level scope & importing scope + // val x = 0 + // fun test() { x } towerDataConsumer.consume(TOWER_LEVEL, ScopeTowerLevel(session, components, scope), group++) }