FIR: distinguish lazy/non-lazy nested scopes more clear

This commit is contained in:
Mikhail Glukhikh
2019-12-12 14:34:47 +03:00
parent fea224749b
commit 001af68495
4 changed files with 24 additions and 28 deletions
@@ -28,9 +28,7 @@ import org.jetbrains.kotlin.fir.java.scopes.JavaClassUseSiteMemberScope
import org.jetbrains.kotlin.fir.java.scopes.JavaOverrideChecker
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.scopes.impl.FirSuperTypeScope
import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope
import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope
import org.jetbrains.kotlin.fir.scopes.impl.*
import org.jetbrains.kotlin.fir.symbols.CallableId
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.toFirSourceElement
@@ -69,9 +67,8 @@ class JavaSymbolProvider(
val symbol = this.getClassLikeSymbolByFqName(classId) ?: return null
val regularClass = symbol.fir
return if (regularClass is FirJavaClass) {
nestedClassifierScope(
lazyNestedClassifierScope(
classId,
session,
existingNames = regularClass.existingNestedClassifierNames,
symbolProvider = this
)
@@ -110,12 +107,11 @@ class JavaSymbolProvider(
visitedSymbols: MutableSet<FirClassLikeSymbol<*>>
): JavaClassUseSiteMemberScope {
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
val declaredScope = declaredMemberScope(
val declaredScope = if (regularClass is FirJavaClass) declaredMemberScopeWithLazyNestedScope(
regularClass,
useLazyNestedClassifierScope = regularClass is FirJavaClass,
existingNames = (regularClass as? FirJavaClass)?.existingNestedClassifierNames,
existingNames = regularClass.existingNestedClassifierNames,
symbolProvider = this
)
) else declaredMemberScope(regularClass)
val wrappedDeclaredScope = wrapScopeWithJvmMapped(regularClass, declaredScope, useSiteSession, scopeSession)
val superTypeEnhancementScopes =
lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession)