FIR: Simplify JavaScopeProvider
::wrapScopeWithJvmMapped is only needed for built-in classes defined in Kotlin
This commit is contained in:
@@ -22,12 +22,6 @@ import org.jetbrains.kotlin.utils.DFS
|
|||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||||
|
|
||||||
class JavaScopeProvider(
|
class JavaScopeProvider(
|
||||||
val declaredMemberScopeDecorator: (
|
|
||||||
klass: FirClass<*>,
|
|
||||||
declaredMemberScope: FirScope,
|
|
||||||
useSiteSession: FirSession,
|
|
||||||
scopeSession: ScopeSession
|
|
||||||
) -> FirScope = { _, declaredMemberScope, _, _ -> declaredMemberScope },
|
|
||||||
val symbolProvider: JavaSymbolProvider
|
val symbolProvider: JavaSymbolProvider
|
||||||
) : FirScopeProvider() {
|
) : FirScopeProvider() {
|
||||||
override fun getUseSiteMemberScope(
|
override fun getUseSiteMemberScope(
|
||||||
@@ -83,7 +77,6 @@ class JavaScopeProvider(
|
|||||||
): JavaClassUseSiteMemberScope {
|
): JavaClassUseSiteMemberScope {
|
||||||
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
|
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
|
||||||
val declaredScope = buildDeclaredMemberScope(regularClass)
|
val declaredScope = buildDeclaredMemberScope(regularClass)
|
||||||
val wrappedDeclaredScope = declaredMemberScopeDecorator(regularClass, declaredScope, useSiteSession, scopeSession)
|
|
||||||
val superTypes =
|
val superTypes =
|
||||||
if (regularClass.isThereLoopInSupertypes(useSiteSession))
|
if (regularClass.isThereLoopInSupertypes(useSiteSession))
|
||||||
listOf(StandardClassIds.Any.toConeKotlinType(emptyArray(), isNullable = false))
|
listOf(StandardClassIds.Any.toConeKotlinType(emptyArray(), isNullable = false))
|
||||||
@@ -91,7 +84,7 @@ class JavaScopeProvider(
|
|||||||
lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession)
|
lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession)
|
||||||
|
|
||||||
val superTypeScopes = superTypes.mapNotNull {
|
val superTypeScopes = superTypes.mapNotNull {
|
||||||
it.scopeForSupertype(useSiteSession, scopeSession, subClass = regularClass, wrappedDeclaredScope, delegateFields = null)
|
it.scopeForSupertype(useSiteSession, scopeSession, subClass = regularClass, declaredScope, delegateFields = null)
|
||||||
}
|
}
|
||||||
|
|
||||||
JavaClassUseSiteMemberScope(
|
JavaClassUseSiteMemberScope(
|
||||||
@@ -105,7 +98,7 @@ class JavaScopeProvider(
|
|||||||
),
|
),
|
||||||
superTypeScopes,
|
superTypeScopes,
|
||||||
regularClass.defaultType(),
|
regularClass.defaultType(),
|
||||||
), wrappedDeclaredScope
|
), declaredScope
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -130,7 +123,6 @@ class JavaScopeProvider(
|
|||||||
|
|
||||||
return scopeSession.getOrBuild(klass.symbol, JAVA_ENHANCEMENT_FOR_STATIC) {
|
return scopeSession.getOrBuild(klass.symbol, JAVA_ENHANCEMENT_FOR_STATIC) {
|
||||||
val declaredScope = buildDeclaredMemberScope(klass)
|
val declaredScope = buildDeclaredMemberScope(klass)
|
||||||
val wrappedDeclaredScope = declaredMemberScopeDecorator(klass, declaredScope, useSiteSession, scopeSession)
|
|
||||||
|
|
||||||
val superClassScope = klass.findJavaSuperClass()?.let {
|
val superClassScope = klass.findJavaSuperClass()?.let {
|
||||||
(it.scopeProvider as? JavaScopeProvider)
|
(it.scopeProvider as? JavaScopeProvider)
|
||||||
@@ -147,7 +139,7 @@ class JavaScopeProvider(
|
|||||||
klass.symbol,
|
klass.symbol,
|
||||||
JavaClassStaticUseSiteScope(
|
JavaClassStaticUseSiteScope(
|
||||||
useSiteSession,
|
useSiteSession,
|
||||||
declaredMemberScope = wrappedDeclaredScope,
|
declaredMemberScope = declaredScope,
|
||||||
superClassScope, superTypesScopes,
|
superClassScope, superTypesScopes,
|
||||||
klass.javaTypeParameterStack
|
klass.javaTypeParameterStack
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.fir.resolve.constructType
|
|||||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals
|
||||||
import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
@@ -66,7 +65,7 @@ class JavaSymbolProvider(
|
|||||||
private val packageCache = session.firCachesFactory.createCache(::findPackage)
|
private val packageCache = session.firCachesFactory.createCache(::findPackage)
|
||||||
private val knownClassNamesInPackage = session.firCachesFactory.createCache<FqName, Set<String>?>(::getKnownClassNames)
|
private val knownClassNamesInPackage = session.firCachesFactory.createCache<FqName, Set<String>?>(::getKnownClassNames)
|
||||||
|
|
||||||
private val scopeProvider = JavaScopeProvider(::wrapScopeWithJvmMapped, this)
|
private val scopeProvider = JavaScopeProvider(this)
|
||||||
|
|
||||||
private val facade: KotlinJavaPsiFacade get() = KotlinJavaPsiFacade.getInstance(project)
|
private val facade: KotlinJavaPsiFacade get() = KotlinJavaPsiFacade.getInstance(project)
|
||||||
private val parentClassTypeParameterStackCache = mutableMapOf<FirRegularClassSymbol, JavaTypeParameterStack>()
|
private val parentClassTypeParameterStackCache = mutableMapOf<FirRegularClassSymbol, JavaTypeParameterStack>()
|
||||||
|
|||||||
Reference in New Issue
Block a user