diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt index 9c5eed0c1d6..6f9bd00fe8c 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt @@ -90,11 +90,12 @@ object TopDownAnalyzerFacadeForJVM { packagePartProvider: (GlobalSearchScope) -> PackagePartProvider, declarationProviderFactory: (StorageManager, Collection) -> DeclarationProviderFactory = ::FileBasedDeclarationProviderFactory, sourceModuleSearchScope: GlobalSearchScope = newModuleSearchScope(project, files), - klibList: List = emptyList() + klibList: List = emptyList(), + explicitModuleDependencyList: List = emptyList() ): AnalysisResult { val container = createContainer( project, files, trace, configuration, packagePartProvider, declarationProviderFactory, CompilerEnvironment, - sourceModuleSearchScope, klibList + sourceModuleSearchScope, klibList, explicitModuleDependencyList = explicitModuleDependencyList ) val module = container.get() @@ -127,6 +128,7 @@ object TopDownAnalyzerFacadeForJVM { return AnalysisResult.success(trace.bindingContext, module) } + @OptIn(ExperimentalStdlibApi::class) fun createContainer( project: Project, files: Collection, @@ -137,7 +139,8 @@ object TopDownAnalyzerFacadeForJVM { targetEnvironment: TargetEnvironment = CompilerEnvironment, sourceModuleSearchScope: GlobalSearchScope = newModuleSearchScope(project, files), klibList: List = emptyList(), - implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter? = null + implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter? = null, + explicitModuleDependencyList: List = emptyList() ): ComponentProvider { val jvmTarget = configuration.get(JVMConfigurationKeys.JVM_TARGET, JvmTarget.DEFAULT) val languageVersionSettings = configuration.languageVersionSettings @@ -252,8 +255,16 @@ object TopDownAnalyzerFacadeForJVM { val klibModules = getKlibModules(klibList, dependencyModule) // TODO: remove dependencyModule from friends + val dependencies = buildList { + add(module) + dependencyModule?.let { add(it) } + add(fallbackBuiltIns) + addAll(klibModules) + @Suppress("UNCHECKED_CAST") + addAll(explicitModuleDependencyList) + } module.setDependencies( - listOfNotNull(module, dependencyModule, fallbackBuiltIns) + klibModules, + dependencies, if (dependencyModule != null) setOf(dependencyModule) else emptySet() ) module.initialize(