FIR: try to use JavaSymbolProvider directly in lazy nested classifier scope
This commit is contained in:
@@ -103,7 +103,8 @@ class JavaSymbolProvider(
|
|||||||
val declaredScope = declaredMemberScope(
|
val declaredScope = declaredMemberScope(
|
||||||
regularClass,
|
regularClass,
|
||||||
useLazyNestedClassifierScope = regularClass is FirJavaClass,
|
useLazyNestedClassifierScope = regularClass is FirJavaClass,
|
||||||
existingNames = (regularClass as? FirJavaClass)?.existingNestedClassifierNames
|
existingNames = (regularClass as? FirJavaClass)?.existingNestedClassifierNames,
|
||||||
|
symbolProvider = this
|
||||||
)
|
)
|
||||||
val wrappedDeclaredScope = wrapScopeWithJvmMapped(regularClass, declaredScope, useSiteSession, scopeSession)
|
val wrappedDeclaredScope = wrapScopeWithJvmMapped(regularClass, declaredScope, useSiteSession, scopeSession)
|
||||||
val superTypeEnhancementScopes =
|
val superTypeEnhancementScopes =
|
||||||
|
|||||||
+4
-2
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
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.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction.NEXT
|
||||||
@@ -22,10 +23,11 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
class FirClassDeclaredMemberScope(
|
class FirClassDeclaredMemberScope(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
useLazyNestedClassifierScope: Boolean = false,
|
useLazyNestedClassifierScope: Boolean = false,
|
||||||
existingNames: List<Name>? = null
|
existingNames: List<Name>? = null,
|
||||||
|
symbolProvider: FirSymbolProvider? = null
|
||||||
) : FirScope() {
|
) : FirScope() {
|
||||||
private val nestedClassifierScope = if (useLazyNestedClassifierScope) {
|
private val nestedClassifierScope = if (useLazyNestedClassifierScope) {
|
||||||
nestedClassifierScope(klass.symbol.classId, klass.session, existingNames)
|
nestedClassifierScope(klass.symbol.classId, klass.session, existingNames, symbolProvider)
|
||||||
} else {
|
} else {
|
||||||
nestedClassifierScope(klass)
|
nestedClassifierScope(klass)
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir.scopes.impl
|
package org.jetbrains.kotlin.fir.scopes.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
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.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||||
@@ -19,10 +20,11 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
class FirLazyNestedClassifierScope(
|
class FirLazyNestedClassifierScope(
|
||||||
val classId: ClassId,
|
val classId: ClassId,
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
private val existingNames: List<Name>?
|
private val existingNames: List<Name>?,
|
||||||
|
symbolProvider: FirSymbolProvider?
|
||||||
) : FirScope() {
|
) : FirScope() {
|
||||||
|
|
||||||
private val symbolProvider = session.firSymbolProvider
|
private val symbolProvider = symbolProvider ?: session.firSymbolProvider
|
||||||
|
|
||||||
override fun processClassifiersByName(
|
override fun processClassifiersByName(
|
||||||
name: Name,
|
name: Name,
|
||||||
|
|||||||
+14
-6
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.scopes.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
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.resolve.memberScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -23,10 +24,11 @@ class FirMemberScopeProvider : FirSessionComponent {
|
|||||||
fun declaredMemberScope(
|
fun declaredMemberScope(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
useLazyNestedClassifierScope: Boolean,
|
useLazyNestedClassifierScope: Boolean,
|
||||||
existingNames: List<Name>?
|
existingNames: List<Name>?,
|
||||||
|
symbolProvider: FirSymbolProvider?
|
||||||
): FirScope {
|
): FirScope {
|
||||||
return declaredMemberCache.getOrPut(klass) {
|
return declaredMemberCache.getOrPut(klass) {
|
||||||
FirClassDeclaredMemberScope(klass, useLazyNestedClassifierScope, existingNames)
|
FirClassDeclaredMemberScope(klass, useLazyNestedClassifierScope, existingNames, symbolProvider)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,12 +49,13 @@ class FirMemberScopeProvider : FirSessionComponent {
|
|||||||
fun declaredMemberScope(
|
fun declaredMemberScope(
|
||||||
klass: FirClass<*>,
|
klass: FirClass<*>,
|
||||||
useLazyNestedClassifierScope: Boolean = false,
|
useLazyNestedClassifierScope: Boolean = false,
|
||||||
existingNames: List<Name>? = null
|
existingNames: List<Name>? = null,
|
||||||
|
symbolProvider: FirSymbolProvider? = null
|
||||||
): FirScope {
|
): FirScope {
|
||||||
return klass
|
return klass
|
||||||
.session
|
.session
|
||||||
.memberScopeProvider
|
.memberScopeProvider
|
||||||
.declaredMemberScope(klass, useLazyNestedClassifierScope, existingNames)
|
.declaredMemberScope(klass, useLazyNestedClassifierScope, existingNames, symbolProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun nestedClassifierScope(klass: FirClass<*>): FirNestedClassifierScope {
|
fun nestedClassifierScope(klass: FirClass<*>): FirNestedClassifierScope {
|
||||||
@@ -62,8 +65,13 @@ fun nestedClassifierScope(klass: FirClass<*>): FirNestedClassifierScope {
|
|||||||
.nestedClassifierScope(klass)
|
.nestedClassifierScope(klass)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun nestedClassifierScope(classId: ClassId, session: FirSession, existingNames: List<Name>? = null): FirLazyNestedClassifierScope {
|
fun nestedClassifierScope(
|
||||||
return FirLazyNestedClassifierScope(classId, session, existingNames)
|
classId: ClassId,
|
||||||
|
session: FirSession,
|
||||||
|
existingNames: List<Name>? = null,
|
||||||
|
symbolProvider: FirSymbolProvider? = null
|
||||||
|
): FirLazyNestedClassifierScope {
|
||||||
|
return FirLazyNestedClassifierScope(classId, session, existingNames, symbolProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun selfImportingScope(fqName: FqName, session: FirSession): FirSelfImportingScope {
|
fun selfImportingScope(fqName: FqName, session: FirSession): FirSelfImportingScope {
|
||||||
|
|||||||
Reference in New Issue
Block a user