FIR: Simplify JavaScopeProvider

::wrapScopeWithJvmMapped is only needed for built-in classes defined in Kotlin
This commit is contained in:
Denis.Zharkov
2021-02-03 20:40:03 +03:00
parent 6766c8fe47
commit 04f53d6a23
2 changed files with 4 additions and 13 deletions
@@ -22,12 +22,6 @@ import org.jetbrains.kotlin.utils.DFS
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
class JavaScopeProvider(
val declaredMemberScopeDecorator: (
klass: FirClass<*>,
declaredMemberScope: FirScope,
useSiteSession: FirSession,
scopeSession: ScopeSession
) -> FirScope = { _, declaredMemberScope, _, _ -> declaredMemberScope },
val symbolProvider: JavaSymbolProvider
) : FirScopeProvider() {
override fun getUseSiteMemberScope(
@@ -83,7 +77,6 @@ class JavaScopeProvider(
): JavaClassUseSiteMemberScope {
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
val declaredScope = buildDeclaredMemberScope(regularClass)
val wrappedDeclaredScope = declaredMemberScopeDecorator(regularClass, declaredScope, useSiteSession, scopeSession)
val superTypes =
if (regularClass.isThereLoopInSupertypes(useSiteSession))
listOf(StandardClassIds.Any.toConeKotlinType(emptyArray(), isNullable = false))
@@ -91,7 +84,7 @@ class JavaScopeProvider(
lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession)
val superTypeScopes = superTypes.mapNotNull {
it.scopeForSupertype(useSiteSession, scopeSession, subClass = regularClass, wrappedDeclaredScope, delegateFields = null)
it.scopeForSupertype(useSiteSession, scopeSession, subClass = regularClass, declaredScope, delegateFields = null)
}
JavaClassUseSiteMemberScope(
@@ -105,7 +98,7 @@ class JavaScopeProvider(
),
superTypeScopes,
regularClass.defaultType(),
), wrappedDeclaredScope
), declaredScope
)
}
}
@@ -130,7 +123,6 @@ class JavaScopeProvider(
return scopeSession.getOrBuild(klass.symbol, JAVA_ENHANCEMENT_FOR_STATIC) {
val declaredScope = buildDeclaredMemberScope(klass)
val wrappedDeclaredScope = declaredMemberScopeDecorator(klass, declaredScope, useSiteSession, scopeSession)
val superClassScope = klass.findJavaSuperClass()?.let {
(it.scopeProvider as? JavaScopeProvider)
@@ -147,7 +139,7 @@ class JavaScopeProvider(
klass.symbol,
JavaClassStaticUseSiteScope(
useSiteSession,
declaredMemberScope = wrappedDeclaredScope,
declaredMemberScope = declaredScope,
superClassScope, superTypesScopes,
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.providers.FirSymbolProvider
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.impl.*
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
@@ -66,7 +65,7 @@ class JavaSymbolProvider(
private val packageCache = session.firCachesFactory.createCache(::findPackage)
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 parentClassTypeParameterStackCache = mutableMapOf<FirRegularClassSymbol, JavaTypeParameterStack>()