~ K2: Introduce FirCachingCompositeSymbolProvider
diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCachingCompositeSymbolProvider.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCachingCompositeSymbolProvider.kt
index 8fe90b6..5ad0048e 100644
--- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCachingCompositeSymbolProvider.kt
+++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirCachingCompositeSymbolProvider.kt
@@ -34,7 +34,6 @@
) : FirSymbolProvider(session) {
private val classLikeCache = session.firCachesFactory.createCache(::computeClass)
- private val topLevelCallableCache = session.firCachesFactory.createCache(::computeTopLevelCallables)
private val topLevelFunctionCache = session.firCachesFactory.createCache(::computeTopLevelFunctions)
private val topLevelPropertyCache = session.firCachesFactory.createCache(::computeTopLevelProperties)
private val packageCache = session.firCachesFactory.createCache(::computePackage)
@@ -74,7 +73,14 @@
override fun getTopLevelCallableSymbols(packageFqName: FqName, name: Name): List<FirCallableSymbol<*>> {
if (!mayHaveTopLevelCallablesInPackage(packageFqName, name)) return emptyList()
- return topLevelCallableCache.getValue(CallableId(packageFqName, name))
+ val callableId = CallableId(packageFqName, name)
+ val functions = topLevelFunctionCache.getValue(callableId)
+ val properties = topLevelPropertyCache.getValue(callableId)
+
+ if (properties.isEmpty()) return functions
+ if (functions.isEmpty()) return properties
+
+ return functions + properties
}
private fun mayHaveTopLevelCallablesInPackage(packageFqName: FqName, name: Name): Boolean {