FIR: use FirCachesFactory for package parts cache in KotlinDeserializedJvmSymbolsProvider

This commit is contained in:
Ilya Kirillov
2021-01-19 19:13:22 +01:00
parent 32ae395e05
commit 6543429b9a
@@ -51,7 +51,7 @@ class KotlinDeserializedJvmSymbolsProvider(
) : FirSymbolProvider(session) { ) : FirSymbolProvider(session) {
private val annotationsLoader = AnnotationsLoader(session) private val annotationsLoader = AnnotationsLoader(session)
private val typeAliasCache = session.firCachesFactory.createCache(::findAndDeserializeTypeAlias) private val typeAliasCache = session.firCachesFactory.createCache(::findAndDeserializeTypeAlias)
private val packagePartsCache = SymbolProviderCache<FqName, Collection<PackagePartsCacheData>>() private val packagePartsCache = session.firCachesFactory.createCache(::tryComputePackagePartInfos)
private val classCache = private val classCache =
session.firCachesFactory.createCacheWithPostCompute<ClassId, FirRegularClassSymbol?, FirDeserializationContext?, KotlinClassFinder.Result.KotlinClass?>( session.firCachesFactory.createCacheWithPostCompute<ClassId, FirRegularClassSymbol?, FirDeserializationContext?, KotlinClassFinder.Result.KotlinClass?>(
@@ -262,13 +262,15 @@ class KotlinDeserializedJvmSymbolsProvider(
} }
private fun getPackageParts(packageFqName: FqName): Collection<PackagePartsCacheData> { private fun getPackageParts(packageFqName: FqName): Collection<PackagePartsCacheData> {
return packagePartsCache.lookupCacheOrCalculate(packageFqName) { return packagePartsCache.getValue(packageFqName)
try { }
computePackagePartsInfos(packageFqName)
} catch (e: ProcessCanceledException) { private fun tryComputePackagePartInfos(packageFqName: FqName): List<PackagePartsCacheData> {
emptyList() return try {
} computePackagePartsInfos(packageFqName)
}!! } catch (e: ProcessCanceledException) {
emptyList()
}
} }
override fun getPackage(fqName: FqName): FqName? = null override fun getPackage(fqName: FqName): FqName? = null