diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt index 78731bf664b..be7460d1bbd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/Scopes.kt @@ -8,7 +8,9 @@ package org.jetbrains.kotlin.fir.scopes import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.resolve.ScopeSession +import org.jetbrains.kotlin.fir.resolve.scopeSessionKey import org.jetbrains.kotlin.fir.scopes.impl.* +import org.jetbrains.kotlin.name.FqName fun MutableList.addImportingScopes(file: FirFile, session: FirSession, scopeSession: ScopeSession) { this += createImportingScopes(file, session, scopeSession) @@ -26,7 +28,9 @@ fun createImportingScopes( FirExplicitStarImportingScope(file.imports, session, scopeSession), FirDefaultSimpleImportingScope(session, scopeSession, priority = DefaultImportPriority.LOW), FirDefaultSimpleImportingScope(session, scopeSession, priority = DefaultImportPriority.HIGH), - packageMemberScope(file.packageFqName, session), + scopeSession.getOrBuild(file.packageFqName, PACKAGE_MEMBER) { + FirPackageMemberScope(file.packageFqName, session) + }, // TODO: explicit simple importing scope should have highest priority (higher than inner scopes added in process) FirExplicitSimpleImportingScope(file.imports, session, scopeSession) ) @@ -36,3 +40,5 @@ fun FirCompositeScope.addImportingScopes(file: FirFile, session: FirSession, sco scopes.addImportingScopes(file, session, scopeSession) } +private val PACKAGE_MEMBER = scopeSessionKey() + diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberScopeProvider.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberScopeProvider.kt index df1f2b984ef..7ced4f77a1f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberScopeProvider.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirMemberScopeProvider.kt @@ -5,21 +5,18 @@ package org.jetbrains.kotlin.fir.scopes.impl -import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSessionComponent import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.memberScopeProvider import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name class FirMemberScopeProvider : FirSessionComponent { private val declaredMemberCache = mutableMapOf, FirScope>() private val nestedClassifierCache = mutableMapOf, FirNestedClassifierScope>() - private val packageMemberCache = mutableMapOf() fun declaredMemberScope( klass: FirClass<*>, @@ -37,13 +34,6 @@ class FirMemberScopeProvider : FirSessionComponent { FirNestedClassifierScope(klass) } } - - // TODO: it's better to cache this scope in ScopeSession - fun packageMemberScope(fqName: FqName, session: FirSession): FirPackageMemberScope { - return packageMemberCache.getOrPut(fqName) { - FirPackageMemberScope(fqName, session) - } - } } fun declaredMemberScope(klass: FirClass<*>): FirScope { @@ -79,7 +69,3 @@ fun lazyNestedClassifierScope( return FirLazyNestedClassifierScope(classId, existingNames, symbolProvider) } -fun packageMemberScope(fqName: FqName, session: FirSession): FirPackageMemberScope { - return session.memberScopeProvider.packageMemberScope(fqName, session) -} -