[low level fir] create separate FirModuleData for every library module dependency
This commit is contained in:
+10
-5
@@ -6,12 +6,13 @@
|
||||
package org.jetbrains.kotlin.analysis.api.standalone.base.project.structure
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtLibraryModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
||||
import org.jetbrains.kotlin.analysis.project.structure.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.contains
|
||||
|
||||
class KtStaticModuleProvider(private val modules: List<KtModule>) : ProjectStructureProvider() {
|
||||
class KtStaticModuleProvider(
|
||||
private val modules: List<KtModule>,
|
||||
private val stdlibs: Set<KtModule>
|
||||
) : ProjectStructureProvider() {
|
||||
override fun getKtModuleForKtElement(element: PsiElement): KtModule {
|
||||
return modules.first { module ->
|
||||
module.contentScope.contains(element)
|
||||
@@ -19,6 +20,10 @@ class KtStaticModuleProvider(private val modules: List<KtModule>) : ProjectStruc
|
||||
}
|
||||
|
||||
override fun getKtLibraryModules(): Collection<KtLibraryModule> {
|
||||
return modules.filterIsInstance<KtLibraryModule>()
|
||||
return modules.filterIsInstance<KtLibraryModule>()
|
||||
}
|
||||
|
||||
override fun getStdlibModule(module: KtModule): KtLibraryModule? {
|
||||
return module.allDirectDependenciesOfType<KtLibraryModule>().firstOrNull { it in stdlibs }
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -55,7 +55,7 @@ object StandaloneProjectFactory {
|
||||
KotlinCoreEnvironment.registerProjectExtensionPoints(project.extensionArea)
|
||||
KotlinCoreEnvironment.registerProjectServices(project)
|
||||
|
||||
project.registerService(ProjectStructureProvider::class.java, KtStaticModuleProvider(modules.map { it.ktModule }))
|
||||
project.registerService(ProjectStructureProvider::class.java, KtStaticModuleProvider(modules.map { it.ktModule }, emptySet()))
|
||||
initialiseVirtualFinderFinderServices(modules, environment, jdkHome, languageVersionSettings)
|
||||
initialiseAnnotationServices(project)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user