diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 6fcfdeff655..d88d2e79158 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -103,7 +103,8 @@ class JavaSymbolProvider( val declaredScope = declaredMemberScope( regularClass, useLazyNestedClassifierScope = regularClass is FirJavaClass, - existingNames = (regularClass as? FirJavaClass)?.existingNestedClassifierNames + existingNames = (regularClass as? FirJavaClass)?.existingNestedClassifierNames, + symbolProvider = this ) val wrappedDeclaredScope = wrapScopeWithJvmMapped(regularClass, declaredScope, useSiteSession, scopeSession) val superTypeEnhancementScopes = diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt index 9437b71f0b0..3dc35d38e01 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration import org.jetbrains.kotlin.fir.declarations.FirClass import org.jetbrains.kotlin.fir.declarations.FirConstructor import org.jetbrains.kotlin.fir.declarations.FirRegularClass +import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT @@ -22,10 +23,11 @@ import org.jetbrains.kotlin.name.Name class FirClassDeclaredMemberScope( klass: FirClass<*>, useLazyNestedClassifierScope: Boolean = false, - existingNames: List? = null + existingNames: List? = null, + symbolProvider: FirSymbolProvider? = null ) : FirScope() { private val nestedClassifierScope = if (useLazyNestedClassifierScope) { - nestedClassifierScope(klass.symbol.classId, klass.session, existingNames) + nestedClassifierScope(klass.symbol.classId, klass.session, existingNames, symbolProvider) } else { nestedClassifierScope(klass) } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLazyNestedClassifierScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLazyNestedClassifierScope.kt index d80c1495e17..71f1ce27c31 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLazyNestedClassifierScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirLazyNestedClassifierScope.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.scopes.impl import org.jetbrains.kotlin.fir.FirSession +import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.firSymbolProvider import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.ProcessorAction @@ -19,10 +20,11 @@ import org.jetbrains.kotlin.name.Name class FirLazyNestedClassifierScope( val classId: ClassId, session: FirSession, - private val existingNames: List? + private val existingNames: List?, + symbolProvider: FirSymbolProvider? ) : FirScope() { - private val symbolProvider = session.firSymbolProvider + private val symbolProvider = symbolProvider ?: session.firSymbolProvider override fun processClassifiersByName( name: Name, 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 02a957a0784..542f3af8e1d 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 @@ -8,6 +8,7 @@ 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 @@ -23,10 +24,11 @@ class FirMemberScopeProvider : FirSessionComponent { fun declaredMemberScope( klass: FirClass<*>, useLazyNestedClassifierScope: Boolean, - existingNames: List? + existingNames: List?, + symbolProvider: FirSymbolProvider? ): FirScope { return declaredMemberCache.getOrPut(klass) { - FirClassDeclaredMemberScope(klass, useLazyNestedClassifierScope, existingNames) + FirClassDeclaredMemberScope(klass, useLazyNestedClassifierScope, existingNames, symbolProvider) } } @@ -47,12 +49,13 @@ class FirMemberScopeProvider : FirSessionComponent { fun declaredMemberScope( klass: FirClass<*>, useLazyNestedClassifierScope: Boolean = false, - existingNames: List? = null + existingNames: List? = null, + symbolProvider: FirSymbolProvider? = null ): FirScope { return klass .session .memberScopeProvider - .declaredMemberScope(klass, useLazyNestedClassifierScope, existingNames) + .declaredMemberScope(klass, useLazyNestedClassifierScope, existingNames, symbolProvider) } fun nestedClassifierScope(klass: FirClass<*>): FirNestedClassifierScope { @@ -62,8 +65,13 @@ fun nestedClassifierScope(klass: FirClass<*>): FirNestedClassifierScope { .nestedClassifierScope(klass) } -fun nestedClassifierScope(classId: ClassId, session: FirSession, existingNames: List? = null): FirLazyNestedClassifierScope { - return FirLazyNestedClassifierScope(classId, session, existingNames) +fun nestedClassifierScope( + classId: ClassId, + session: FirSession, + existingNames: List? = null, + symbolProvider: FirSymbolProvider? = null +): FirLazyNestedClassifierScope { + return FirLazyNestedClassifierScope(classId, session, existingNames, symbolProvider) } fun selfImportingScope(fqName: FqName, session: FirSession): FirSelfImportingScope {