AA: expose library modules in the project structure
This commit is contained in:
committed by
Ilya Kirillov
parent
dcc349da0d
commit
cbef3faae7
@@ -17,6 +17,7 @@ dependencies {
|
||||
api(project(":analysis:analysis-api-fir"))
|
||||
api(project(":analysis:low-level-api-fir"))
|
||||
api(project(":analysis:symbol-light-classes"))
|
||||
api(project(":analysis:decompiled:light-classes-for-decompiled"))
|
||||
|
||||
testApi(projectTests(":analysis:analysis-api-impl-base"))
|
||||
testApi(projectTests(":analysis:analysis-api-fir"))
|
||||
|
||||
+7
-8
@@ -17,20 +17,15 @@ import org.jetbrains.kotlin.analysis.api.InvalidWayOfUsingAnalysisSession
|
||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.analysis.api.impl.base.references.HLApiReferenceProviderService
|
||||
import org.jetbrains.kotlin.analysis.decompiled.light.classes.ClsJavaStubByVirtualFileCache
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedClassInheritorsProcessorFactory
|
||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.PackagePartProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
|
||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
|
||||
import org.jetbrains.kotlin.analysis.project.structure.ProjectStructureProvider
|
||||
import org.jetbrains.kotlin.analysis.project.structure.impl.ProjectStructureProviderByCompilerConfiguration
|
||||
import org.jetbrains.kotlin.analysis.providers.KotlinAnnotationsResolverFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.KotlinDeclarationProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.KotlinModificationTrackerFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.KotlinPackageProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.impl.KotlinStaticAnnotationsResolverFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.impl.KotlinStaticDeclarationProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.impl.KotlinStaticModificationTrackerFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.impl.KotlinStaticPackageProviderFactory
|
||||
import org.jetbrains.kotlin.analysis.providers.*
|
||||
import org.jetbrains.kotlin.analysis.providers.impl.*
|
||||
import org.jetbrains.kotlin.asJava.KotlinAsJavaSupport
|
||||
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder
|
||||
import org.jetbrains.kotlin.cli.jvm.config.javaSourceRoots
|
||||
@@ -76,6 +71,7 @@ public fun configureApplicationEnvironment(app: MockApplication) {
|
||||
* * [KtAnalysisSessionProvider]
|
||||
* * [KotlinAsJavaFirSupport]
|
||||
* * [SymbolLightClassFacadeCache] for FIR light class support
|
||||
* * [ClsJavaStubByVirtualFileCache]
|
||||
* * [KotlinModificationTrackerFactory]
|
||||
* * [KotlinAnnotationsResolverFactory]
|
||||
* * [LLFirResolveStateService]
|
||||
@@ -151,6 +147,9 @@ internal fun configureProjectEnvironment(
|
||||
project.registerService(
|
||||
SymbolLightClassFacadeCache::class.java
|
||||
)
|
||||
project.registerService(
|
||||
ClsJavaStubByVirtualFileCache::class.java
|
||||
)
|
||||
|
||||
project.picoContainer.registerComponentInstance(
|
||||
KotlinModificationTrackerFactory::class.qualifiedName,
|
||||
|
||||
+1
-1
@@ -54,7 +54,7 @@ internal class KtSourceModuleByCompilerConfiguration(
|
||||
ktFiles: List<KtFile>,
|
||||
jarFileSystem: CoreJarFileSystem,
|
||||
) : BaseKtModuleByCompilerConfiguration(compilerConfig, project), KtSourceModule {
|
||||
override val directRegularDependencies: List<KtModule> by lazy {
|
||||
override val directRegularDependencies: List<KtLibraryModule> by lazy {
|
||||
val libraryRoots = compilerConfig.jvmModularRoots + compilerConfig.jvmClasspathRoots
|
||||
val libraryRootsByType = libraryRoots.groupBy { it.isDirectory }
|
||||
buildList {
|
||||
|
||||
+9
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.project.structure.impl
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem
|
||||
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.config.CompilerConfiguration
|
||||
@@ -21,6 +22,10 @@ internal class ProjectStructureProviderByCompilerConfiguration(
|
||||
) : ProjectStructureProvider() {
|
||||
private val sourceModule = KtSourceModuleByCompilerConfiguration(compilerConfig, project, ktFiles, jarFileSystem)
|
||||
|
||||
private val libraryModules: Collection<KtLibraryModule> by lazy {
|
||||
sourceModule.directRegularDependencies
|
||||
}
|
||||
|
||||
override fun getKtModuleForKtElement(element: PsiElement): KtModule {
|
||||
val containingFile = element.containingFile.virtualFile
|
||||
return if (containingFile in sourceModule.contentScope) {
|
||||
@@ -30,4 +35,8 @@ internal class ProjectStructureProviderByCompilerConfiguration(
|
||||
?: error("Can't find module for ${containingFile.path}")
|
||||
}
|
||||
}
|
||||
|
||||
override fun getKtLibraryModules(): Collection<KtLibraryModule> {
|
||||
return libraryModules
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user