diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index bf955843396..30a9719dacf 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.resolve.inference.FirCallCompleter import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.addImportingScopes import org.jetbrains.kotlin.fir.scopes.impl.FirLocalScope -import org.jetbrains.kotlin.fir.scopes.impl.FirTopLevelDeclaredMemberScope import org.jetbrains.kotlin.fir.scopes.impl.withReplacedConeType import org.jetbrains.kotlin.fir.symbols.* import org.jetbrains.kotlin.fir.types.* @@ -101,8 +100,7 @@ open class FirBodyResolveTransformer( this.file = file return withScopeCleanup(topLevelScopes) { topLevelScopes.addImportingScopes(file, session, scopeSession) - topLevelScopes += FirTopLevelDeclaredMemberScope(file, session, scopeSession) - transformElement(file, data) + super.transformFile(file, data) } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSelfImportingScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSelfImportingScope.kt index 02091e58aeb..b94745590ba 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSelfImportingScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirSelfImportingScope.kt @@ -9,7 +9,11 @@ import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.scopes.FirPosition import org.jetbrains.kotlin.fir.scopes.FirScope +import org.jetbrains.kotlin.fir.scopes.ProcessorAction +import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassifierSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol +import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -39,4 +43,24 @@ class FirSelfImportingScope(val fqName: FqName, val session: FirSession) : FirSc true } } + + override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> ProcessorAction): ProcessorAction { + val symbols = symbolProvider.getTopLevelCallableSymbols(fqName, name) + for (symbol in symbols) { + if (symbol is FirFunctionSymbol<*> && !processor(symbol)) { + return ProcessorAction.STOP + } + } + return ProcessorAction.NEXT + } + + override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> ProcessorAction): ProcessorAction { + val symbols = symbolProvider.getTopLevelCallableSymbols(fqName, name) + for (symbol in symbols) { + if (symbol is FirPropertySymbol && !processor(symbol)) { + return ProcessorAction.STOP + } + } + return ProcessorAction.NEXT + } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTopLevelDeclaredMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTopLevelDeclaredMemberScope.kt deleted file mode 100644 index b24d8066dde..00000000000 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirTopLevelDeclaredMemberScope.kt +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.fir.scopes.impl - -import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.FirFile -import org.jetbrains.kotlin.fir.scopes.ProcessorAction -import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT -import org.jetbrains.kotlin.fir.scopes.ProcessorAction.STOP -import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol -import org.jetbrains.kotlin.name.Name - -class FirTopLevelDeclaredMemberScope( - file: FirFile, - session: FirSession, - lookupInFir: Boolean = true -) : FirAbstractProviderBasedScope(session, lookupInFir) { - private val packageFqName = file.packageFqName - - override fun processFunctionsByName(name: Name, processor: (FirFunctionSymbol<*>) -> ProcessorAction): ProcessorAction { - val symbols = provider.getTopLevelCallableSymbols(packageFqName, name) - for (symbol in symbols) { - if (symbol is FirFunctionSymbol<*> && !processor(symbol)) { - return STOP - } - } - return NEXT - } - - override fun processPropertiesByName(name: Name, processor: (FirCallableSymbol<*>) -> ProcessorAction): ProcessorAction { - val symbols = provider.getTopLevelCallableSymbols(packageFqName, name) - for (symbol in symbols) { - if (symbol is FirPropertySymbol && !processor(symbol)) { - return STOP - } - } - return NEXT - } -} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt index 750067b7d66..7e0f42a2782 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/fir/FirResolutionApi.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.resolve.FirProvider import org.jetbrains.kotlin.fir.resolve.transformers.FirDesignatedBodyResolveTransformer import org.jetbrains.kotlin.fir.resolve.transformers.runResolve import org.jetbrains.kotlin.fir.scopes.ProcessorAction -import org.jetbrains.kotlin.fir.scopes.impl.FirTopLevelDeclaredMemberScope +import org.jetbrains.kotlin.fir.scopes.impl.FirSelfImportingScope import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.types.FirErrorTypeRef @@ -39,7 +39,7 @@ private fun FirFile.findCallableMember( packageFqName: FqName, klassFqName: FqName?, declName: Name ): FirCallableDeclaration<*> { val memberScope = - if (klassFqName == null) FirTopLevelDeclaredMemberScope(this, session) + if (klassFqName == null) FirSelfImportingScope(this.packageFqName, session) else provider.getClassDeclaredMemberScope(ClassId(packageFqName, klassFqName, false))!! var result: FirCallableDeclaration<*>? = null val processor = { symbol: FirCallableSymbol<*> ->