From ffdc68b68d8c0c487a370fc45b5a95f05d7e8ade Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 21 Aug 2020 11:59:22 +0300 Subject: [PATCH] [FIR] Get rid of AbstractFirSymbolProviderWithCache --- .../jetbrains/kotlin/fir/java/JavaSymbolProvider.kt | 7 +++++-- .../KotlinDeserializedJvmSymbolsProvider.kt | 8 +++----- ...olProviderWithCache.kt => SymbolProviderCache.kt} | 12 ------------ .../impl/FirDependenciesSymbolProviderImpl.kt | 9 +++++++-- 4 files changed, 15 insertions(+), 21 deletions(-) rename compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/{AbstractFirSymbolProviderWithCache.kt => SymbolProviderCache.kt} (75%) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index 8eb5709ed1b..2536bafd274 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusIm import org.jetbrains.kotlin.fir.expressions.builder.* import org.jetbrains.kotlin.fir.java.declarations.* import org.jetbrains.kotlin.fir.resolve.constructType -import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProviderWithCache +import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals import org.jetbrains.kotlin.fir.resolve.providers.SymbolProviderCache import org.jetbrains.kotlin.fir.resolve.scopes.wrapScopeWithJvmMapped @@ -45,11 +45,14 @@ class JavaSymbolProvider( session: FirSession, val project: Project, private val searchScope: GlobalSearchScope, -) : AbstractFirSymbolProviderWithCache(session) { +) : FirSymbolProvider(session) { companion object { private val VALUE_METHOD_NAME = Name.identifier("value") } + private val classCache = SymbolProviderCache() + private val packageCache = SymbolProviderCache() + private val scopeProvider = JavaScopeProvider(::wrapScopeWithJvmMapped, this) private val facade: KotlinJavaPsiFacade get() = KotlinJavaPsiFacade.getInstance(project) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt index e06443153cd..0274f821f00 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt @@ -25,10 +25,7 @@ import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations import org.jetbrains.kotlin.fir.resolve.firSymbolProvider -import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProviderWithCache -import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals -import org.jetbrains.kotlin.fir.resolve.providers.SymbolProviderCache -import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredCallableSymbols +import org.jetbrains.kotlin.fir.resolve.providers.* import org.jetbrains.kotlin.fir.scopes.KotlinScopeProvider import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag import org.jetbrains.kotlin.fir.symbols.impl.* @@ -61,7 +58,8 @@ class KotlinDeserializedJvmSymbolsProvider( private val kotlinClassFinder: KotlinClassFinder, private val javaClassFinder: JavaClassFinder, private val kotlinScopeProvider: KotlinScopeProvider, -) : AbstractFirSymbolProviderWithCache(session) { +) : FirSymbolProvider(session) { + private val classCache = SymbolProviderCache() private val typeAliasCache = SymbolProviderCache() private val packagePartsCache = SymbolProviderCache>() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/AbstractFirSymbolProviderWithCache.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/SymbolProviderCache.kt similarity index 75% rename from compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/AbstractFirSymbolProviderWithCache.kt rename to compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/SymbolProviderCache.kt index d30e870426a..0a489a928de 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/AbstractFirSymbolProviderWithCache.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/SymbolProviderCache.kt @@ -5,19 +5,7 @@ package org.jetbrains.kotlin.fir.resolve.providers -import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.PrivateForInline -import org.jetbrains.kotlin.fir.symbols.CallableId -import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol -import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName - -abstract class AbstractFirSymbolProviderWithCache>(session: FirSession) : FirSymbolProvider(session) { - protected val classCache = SymbolProviderCache() - protected val topLevelCallableCache = SymbolProviderCache>>() - protected val packageCache = SymbolProviderCache() -} @Suppress("EXPERIMENTAL_FEATURE_WARNING") inline class SymbolProviderCache @PrivateForInline constructor(@PrivateForInline val cache: HashMap) { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt index 7839fae5b22..2800057fbb2 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt @@ -8,8 +8,9 @@ package org.jetbrains.kotlin.fir.resolve.providers.impl import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.dependenciesWithoutSelf import org.jetbrains.kotlin.fir.resolve.firSymbolProvider -import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProviderWithCache +import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProviderInternals +import org.jetbrains.kotlin.fir.resolve.providers.SymbolProviderCache import org.jetbrains.kotlin.fir.symbols.CallableId import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol @@ -17,7 +18,11 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -open class FirDependenciesSymbolProviderImpl(session: FirSession) : AbstractFirSymbolProviderWithCache>(session) { +open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirSymbolProvider(session) { + private val classCache = SymbolProviderCache>() + private val topLevelCallableCache = SymbolProviderCache>>() + private val packageCache = SymbolProviderCache() + protected open val dependencyProviders by lazy { val moduleInfo = session.moduleInfo ?: return@lazy emptyList() moduleInfo.dependenciesWithoutSelf().mapNotNull {