[FE] Allow explicitly specify dependent modules fin TopDownAnalyzerFacade
This commit is contained in:
+15
-4
@@ -90,11 +90,12 @@ object TopDownAnalyzerFacadeForJVM {
|
|||||||
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
packagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||||
declarationProviderFactory: (StorageManager, Collection<KtFile>) -> DeclarationProviderFactory = ::FileBasedDeclarationProviderFactory,
|
declarationProviderFactory: (StorageManager, Collection<KtFile>) -> DeclarationProviderFactory = ::FileBasedDeclarationProviderFactory,
|
||||||
sourceModuleSearchScope: GlobalSearchScope = newModuleSearchScope(project, files),
|
sourceModuleSearchScope: GlobalSearchScope = newModuleSearchScope(project, files),
|
||||||
klibList: List<KotlinLibrary> = emptyList()
|
klibList: List<KotlinLibrary> = emptyList(),
|
||||||
|
explicitModuleDependencyList: List<ModuleDescriptorImpl> = emptyList()
|
||||||
): AnalysisResult {
|
): AnalysisResult {
|
||||||
val container = createContainer(
|
val container = createContainer(
|
||||||
project, files, trace, configuration, packagePartProvider, declarationProviderFactory, CompilerEnvironment,
|
project, files, trace, configuration, packagePartProvider, declarationProviderFactory, CompilerEnvironment,
|
||||||
sourceModuleSearchScope, klibList
|
sourceModuleSearchScope, klibList, explicitModuleDependencyList = explicitModuleDependencyList
|
||||||
)
|
)
|
||||||
|
|
||||||
val module = container.get<ModuleDescriptor>()
|
val module = container.get<ModuleDescriptor>()
|
||||||
@@ -127,6 +128,7 @@ object TopDownAnalyzerFacadeForJVM {
|
|||||||
return AnalysisResult.success(trace.bindingContext, module)
|
return AnalysisResult.success(trace.bindingContext, module)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalStdlibApi::class)
|
||||||
fun createContainer(
|
fun createContainer(
|
||||||
project: Project,
|
project: Project,
|
||||||
files: Collection<KtFile>,
|
files: Collection<KtFile>,
|
||||||
@@ -137,7 +139,8 @@ object TopDownAnalyzerFacadeForJVM {
|
|||||||
targetEnvironment: TargetEnvironment = CompilerEnvironment,
|
targetEnvironment: TargetEnvironment = CompilerEnvironment,
|
||||||
sourceModuleSearchScope: GlobalSearchScope = newModuleSearchScope(project, files),
|
sourceModuleSearchScope: GlobalSearchScope = newModuleSearchScope(project, files),
|
||||||
klibList: List<KotlinLibrary> = emptyList(),
|
klibList: List<KotlinLibrary> = emptyList(),
|
||||||
implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter? = null
|
implicitsResolutionFilter: ImplicitsExtensionsResolutionFilter? = null,
|
||||||
|
explicitModuleDependencyList: List<ModuleDescriptorImpl> = emptyList()
|
||||||
): ComponentProvider {
|
): ComponentProvider {
|
||||||
val jvmTarget = configuration.get(JVMConfigurationKeys.JVM_TARGET, JvmTarget.DEFAULT)
|
val jvmTarget = configuration.get(JVMConfigurationKeys.JVM_TARGET, JvmTarget.DEFAULT)
|
||||||
val languageVersionSettings = configuration.languageVersionSettings
|
val languageVersionSettings = configuration.languageVersionSettings
|
||||||
@@ -252,8 +255,16 @@ object TopDownAnalyzerFacadeForJVM {
|
|||||||
val klibModules = getKlibModules(klibList, dependencyModule)
|
val klibModules = getKlibModules(klibList, dependencyModule)
|
||||||
|
|
||||||
// TODO: remove dependencyModule from friends
|
// 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(
|
module.setDependencies(
|
||||||
listOfNotNull(module, dependencyModule, fallbackBuiltIns) + klibModules,
|
dependencies,
|
||||||
if (dependencyModule != null) setOf(dependencyModule) else emptySet()
|
if (dependencyModule != null) setOf(dependencyModule) else emptySet()
|
||||||
)
|
)
|
||||||
module.initialize(
|
module.initialize(
|
||||||
|
|||||||
Reference in New Issue
Block a user