[Analysis API Standalone] change behavior of StandaloneAnalysisAPISession.getModulesWithFiles
- it now returns a map only for `KtSourceModule` - every `KtSourceModule` is present there, even a module without source files ^KT-60884
This commit is contained in:
committed by
Space Team
parent
a2015a6eb5
commit
c76f365efb
+3
-3
@@ -11,14 +11,14 @@ import com.intellij.openapi.application.Application
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
|
|
||||||
public class StandaloneAnalysisAPISession internal constructor(
|
public class StandaloneAnalysisAPISession internal constructor(
|
||||||
kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment,
|
kotlinCoreProjectEnvironment: KotlinCoreProjectEnvironment,
|
||||||
public val createPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
public val createPackagePartProvider: (GlobalSearchScope) -> PackagePartProvider,
|
||||||
modulesWithFilesProvider: () -> Map<KtModule, List<PsiFile>>
|
modulesWithFilesProvider: () -> Map<KtSourceModule, List<PsiFile>>
|
||||||
) {
|
) {
|
||||||
// TODO: better to limit exposure? Current usages are: addExtension, jarFileSystem
|
// TODO: better to limit exposure? Current usages are: addExtension, jarFileSystem
|
||||||
public val coreApplicationEnvironment: CoreApplicationEnvironment = kotlinCoreProjectEnvironment.environment
|
public val coreApplicationEnvironment: CoreApplicationEnvironment = kotlinCoreProjectEnvironment.environment
|
||||||
@@ -33,5 +33,5 @@ public class StandaloneAnalysisAPISession internal constructor(
|
|||||||
)
|
)
|
||||||
public val mockProject: MockProject = kotlinCoreProjectEnvironment.project
|
public val mockProject: MockProject = kotlinCoreProjectEnvironment.project
|
||||||
|
|
||||||
public val modulesWithFiles: Map<KtModule, List<PsiFile>> by lazy(modulesWithFilesProvider)
|
public val modulesWithFiles: Map<KtSourceModule, List<PsiFile>> by lazy(modulesWithFilesProvider)
|
||||||
}
|
}
|
||||||
+8
-5
@@ -21,9 +21,11 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.api.services.FirSealedCla
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.JvmFirDeserializedSymbolProviderFactory
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.project.structure.JvmFirDeserializedSymbolProviderFactory
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
|
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProvider
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
|
import org.jetbrains.kotlin.analysis.project.structure.KtModuleScopeProviderImpl
|
||||||
|
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.builder.KtModuleProviderBuilder
|
import org.jetbrains.kotlin.analysis.project.structure.builder.KtModuleProviderBuilder
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.builder.buildProjectStructureProvider
|
import org.jetbrains.kotlin.analysis.project.structure.builder.buildProjectStructureProvider
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.KtModuleProviderImpl
|
import org.jetbrains.kotlin.analysis.project.structure.impl.KtModuleProviderImpl
|
||||||
|
import org.jetbrains.kotlin.analysis.project.structure.impl.KtSourceModuleImpl
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.buildKtModuleProviderByCompilerConfiguration
|
import org.jetbrains.kotlin.analysis.project.structure.impl.buildKtModuleProviderByCompilerConfiguration
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.getPsiFilesFromPaths
|
import org.jetbrains.kotlin.analysis.project.structure.impl.getPsiFilesFromPaths
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.impl.getSourceFilePaths
|
import org.jetbrains.kotlin.analysis.project.structure.impl.getSourceFilePaths
|
||||||
@@ -216,10 +218,11 @@ public class StandaloneAnalysisAPISessionBuilder(
|
|||||||
kotlinCoreProjectEnvironment,
|
kotlinCoreProjectEnvironment,
|
||||||
createPackagePartProvider,
|
createPackagePartProvider,
|
||||||
) {
|
) {
|
||||||
projectStructureProvider.allSourceFiles
|
projectStructureProvider.allKtModules.mapNotNull { ktModule ->
|
||||||
.asSequence()
|
if (ktModule !is KtSourceModule) return@mapNotNull null
|
||||||
.filterIsInstance<PsiFile>()
|
check(ktModule is KtSourceModuleImpl)
|
||||||
.groupBy { projectStructureProvider.getModule(it.originalElement, null) }
|
ktModule to ktModule.sourceRoots.filterIsInstance<PsiFile>()
|
||||||
|
}.toMap()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,7 +234,7 @@ public inline fun buildStandaloneAnalysisAPISession(
|
|||||||
unitTestMode: Boolean = false,
|
unitTestMode: Boolean = false,
|
||||||
withPsiDeclarationFromBinaryModuleProvider: Boolean = false,
|
withPsiDeclarationFromBinaryModuleProvider: Boolean = false,
|
||||||
classLoader: ClassLoader = MockProject::class.java.classLoader,
|
classLoader: ClassLoader = MockProject::class.java.classLoader,
|
||||||
init: StandaloneAnalysisAPISessionBuilder.() -> Unit
|
init: StandaloneAnalysisAPISessionBuilder.() -> Unit,
|
||||||
): StandaloneAnalysisAPISession {
|
): StandaloneAnalysisAPISession {
|
||||||
contract {
|
contract {
|
||||||
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
|
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
|
||||||
|
|||||||
Reference in New Issue
Block a user