diff --git a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt index 81090cdeb9d..90901bec8be 100644 --- a/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt +++ b/idea/idea-frontend-fir/idea-fir-low-level-api/src/org/jetbrains/kotlin/idea/fir/low/level/api/providers/FirModuleWithDependenciesSymbolProvider.kt @@ -45,18 +45,28 @@ internal class FirModuleWithDependenciesSymbolProvider( @FirSymbolProviderInternals override fun getTopLevelFunctionSymbolsTo(destination: MutableList, packageFqName: FqName, name: Name) { - providers.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) } - withDependent { - dependentProviders.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) } - } + getTopLevelFunctionSymbolsToWithoutDependencies(destination, packageFqName, name) + dependentProviders.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) } @FirSymbolProviderInternals override fun getTopLevelPropertySymbolsTo(destination: MutableList, packageFqName: FqName, name: Name) { + getTopLevelPropertySymbolsToWithoutDependencies(destination, packageFqName, name) + dependentProviders.getTopLevelPropertySymbolsTo(destination, packageFqName, name) + } + + @FirSymbolProviderInternals + fun getTopLevelFunctionSymbolsToWithoutDependencies( + destination: MutableList, + packageFqName: FqName, + name: Name + ) { + providers.forEach { it.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) } + } + + @FirSymbolProviderInternals + fun getTopLevelPropertySymbolsToWithoutDependencies(destination: MutableList, packageFqName: FqName, name: Name) { providers.forEach { it.getTopLevelPropertySymbolsTo(destination, packageFqName, name) } - withDependent { - dependentProviders.forEach { it.getTopLevelPropertySymbolsTo(destination, packageFqName, name) } - } } override fun getPackage(fqName: FqName): FqName? = @@ -89,6 +99,28 @@ private class DependentModuleProviders(session: FirSession, private val provider } } + @FirSymbolProviderInternals + override fun getTopLevelFunctionSymbolsTo(destination: MutableList, packageFqName: FqName, name: Name) { + providers.forEach { provider -> + when (provider) { + is FirModuleWithDependenciesSymbolProvider -> + provider.getTopLevelFunctionSymbolsToWithoutDependencies(destination, packageFqName, name) + else -> provider.getTopLevelFunctionSymbolsTo(destination, packageFqName, name) + } + } + } + + @FirSymbolProviderInternals + override fun getTopLevelPropertySymbolsTo(destination: MutableList, packageFqName: FqName, name: Name) { + providers.forEach { provider -> + when (provider) { + is FirModuleWithDependenciesSymbolProvider -> + provider.getTopLevelPropertySymbolsToWithoutDependencies(destination, packageFqName, name) + else -> provider.getTopLevelPropertySymbolsTo(destination, packageFqName, name) + } + } + } + override fun getPackage(fqName: FqName): FqName? = providers.firstNotNullResult { provider -> when (provider) {