diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt index f9e030ba05d..9aceeb2072e 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/resolve/providers/impl/FirDependenciesSymbolProviderImpl.kt @@ -33,48 +33,16 @@ open class FirDependenciesSymbolProviderImpl(session: FirSession) : FirDependenc protected open val dependencyProviders by lazy { val moduleData = session.nullableModuleData ?: error("FirDependenciesSymbolProvider should not be created if there are no dependencies") - (moduleData.dependencies + moduleData.friendDependencies + moduleData.dependsOnDependencies) + val result = (moduleData.dependencies + moduleData.friendDependencies + moduleData.dependsOnDependencies) .mapNotNull { session.sessionProvider?.getSession(it) } .sortedBy { it.kind } - .map { - if (it.kind == FirSession.Kind.Source) { - it.symbolProvider.loadTransitiveSourceProvides() - } else { - listOf(it.symbolProvider) - } - } - .flatten() - } - - private fun FirSymbolProvider.loadTransitiveSourceProvides(): List { - val result = mutableListOf() - val visited = hashSetOf() - - fun loadTransitiveSourceProvides(provider: FirSymbolProvider) { - if (!visited.add(provider)) { - return - } - - when { - provider is FirDependenciesSymbolProviderImpl -> { - for (p in provider.dependencyProviders) { - loadTransitiveSourceProvides(p) - } - } - provider is FirCompositeSymbolProvider -> { - for (p in provider.providers) { - loadTransitiveSourceProvides(p) - } - } - provider.session.kind == FirSession.Kind.Source -> { - result.add(provider) - } + .map { it.symbolProvider } + result.flatMap { + when (it) { + is FirCompositeSymbolProvider -> it.providers + else -> listOf(it) } } - - loadTransitiveSourceProvides(this) - - return result } @OptIn(FirSymbolProviderInternals::class, ExperimentalStdlibApi::class) diff --git a/compiler/testData/codegen/box/multiplatform/starImportOfExpectEnumWithActualTypeAlias.kt b/compiler/testData/codegen/box/multiplatform/starImportOfExpectEnumWithActualTypeAlias.kt index a1eeca71c6e..e9d1b2a3bd3 100644 --- a/compiler/testData/codegen/box/multiplatform/starImportOfExpectEnumWithActualTypeAlias.kt +++ b/compiler/testData/codegen/box/multiplatform/starImportOfExpectEnumWithActualTypeAlias.kt @@ -3,7 +3,6 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 // IGNORE_BACKEND: NATIVE -// IGNORE_BACKEND_FIR: JVM_IR // MODULE: lib-common // FILE: common.kt