FirClassDeclaredMemberScope: keep cache in provider but not in ScopeSession

This commit is contained in:
Mikhail Glukhikh
2019-10-08 11:56:46 +03:00
parent dfa494a21e
commit 75a3d2fb97
2 changed files with 2 additions and 3 deletions
@@ -90,7 +90,7 @@ class JavaSymbolProvider(
visitedSymbols: MutableSet<FirClassLikeSymbol<*>> visitedSymbols: MutableSet<FirClassLikeSymbol<*>>
): JavaClassUseSiteScope { ): JavaClassUseSiteScope {
return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) { return scopeSession.getOrBuild(regularClass.symbol, JAVA_USE_SITE) {
val declaredScope = scopeSession.getOrBuild(regularClass.symbol, DECLARED) { declaredMemberScope(regularClass) } val declaredScope = declaredMemberScope(regularClass)
val superTypeEnhancementScopes = val superTypeEnhancementScopes =
lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession) lookupSuperTypes(regularClass, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession)
.mapNotNull { useSiteSuperType -> .mapNotNull { useSiteSuperType ->
@@ -48,7 +48,6 @@ inline fun <reified T : FirScope> scopeSessionKey(): ScopeSessionKey<T> {
} }
val USE_SITE = scopeSessionKey<FirScope>() val USE_SITE = scopeSessionKey<FirScope>()
val DECLARED = scopeSessionKey<FirScope>()
data class SubstitutionScopeKey(val type: ConeClassLikeType) : ScopeSessionKey<FirClassSubstitutionScope>() {} data class SubstitutionScopeKey(val type: ConeClassLikeType) : ScopeSessionKey<FirClassSubstitutionScope>() {}
@@ -67,7 +66,7 @@ fun FirTypeAlias.buildUseSiteScope(useSiteSession: FirSession, builder: ScopeSes
fun FirRegularClass.buildDefaultUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope { fun FirRegularClass.buildDefaultUseSiteScope(useSiteSession: FirSession, builder: ScopeSession): FirScope {
return builder.getOrBuild(symbol, USE_SITE) { return builder.getOrBuild(symbol, USE_SITE) {
val declaredScope = builder.getOrBuild(this.symbol, DECLARED) { declaredMemberScope(this) } val declaredScope = declaredMemberScope(this)
val scopes = lookupSuperTypes(this, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession) val scopes = lookupSuperTypes(this, lookupInterfaces = true, deep = false, useSiteSession = useSiteSession)
.mapNotNull { useSiteSuperType -> .mapNotNull { useSiteSuperType ->
if (useSiteSuperType is ConeClassErrorType) return@mapNotNull null if (useSiteSuperType is ConeClassErrorType) return@mapNotNull null