diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt index 9dad25f868c..4abf109c3f3 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt @@ -28,6 +28,7 @@ import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager import com.intellij.psi.util.PsiModificationTracker import com.intellij.util.containers.SLRUCache +import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider import org.jetbrains.kotlin.analyzer.EmptyResolverForProject import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.caches.resolve.KotlinCacheService @@ -375,25 +376,3 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { } } -internal fun globalResolveSessionProvider( - debugName: String, - project: Project, - globalContext: GlobalContextImpl, - settings: PlatformAnalysisSettings, - dependencies: Collection, - moduleFilter: (IdeaModuleInfo) -> Boolean, - reuseDataFrom: ProjectResolutionFacade? = null, - syntheticFiles: Collection = listOf(), - allModules: Collection? = null // null means create resolvers for modules from idea model -): ModuleResolverProvider { - val delegateResolverProvider = reuseDataFrom?.moduleResolverProvider - val delegateResolverForProject = delegateResolverProvider?.resolverForProject ?: EmptyResolverForProject() - - return createModuleResolverProvider( - debugName, project, globalContext, settings, - syntheticFiles, delegateResolverForProject, moduleFilter, - allModules, - delegateResolverProvider?.builtIns, - dependencies - ) -} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt index f5de91151fe..951b0aa6396 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt @@ -64,37 +64,33 @@ fun createModuleResolverProvider( val modulesToCreateResolversFor = allModuleInfos.filter(moduleFilter) - fun createResolverForProject(): ResolverForProject { - val modulesContent = { module: IdeaModuleInfo -> - ModuleContent(syntheticFilesByModule[module] ?: listOf(), module.contentScope()) - } - - val jvmPlatformParameters = JvmPlatformParameters { javaClass: JavaClass -> - val psiClass = (javaClass as JavaClassImpl).psi - psiClass.getNullableModuleInfo() - } - - return AnalyzerFacade.setupResolverForProject( - debugName, globalContext.withProject(project), modulesToCreateResolversFor, - { module -> AnalyzerFacadeProvider.getAnalyzerFacade(module.platform ?: analysisSettings.platform) }, - modulesContent, jvmPlatformParameters, - IDELanguageSettingsProvider, - IdeaEnvironment, builtIns, - delegateResolver, { _, c -> IDEPackagePartProvider(c.moduleContentScope) }, - analysisSettings.sdk?.let { SdkInfo(project, it) }, - modulePlatforms = { module -> module.platform?.multiTargetPlatform }, - packageOracleFactory = project.service() - ) + val modulesContent = { module: IdeaModuleInfo -> + ModuleContent(syntheticFilesByModule[module] ?: listOf(), module.contentScope()) } - val resolverForProject = createResolverForProject() + val jvmPlatformParameters = JvmPlatformParameters { javaClass: JavaClass -> + val psiClass = (javaClass as JavaClassImpl).psi + psiClass.getNullableModuleInfo() + } + + val resolverForProject = AnalyzerFacade.setupResolverForProject( + debugName, globalContext.withProject(project), modulesToCreateResolversFor, + { module -> AnalyzerFacadeProvider.getAnalyzerFacade(module.platform ?: analysisSettings.platform) }, + modulesContent, jvmPlatformParameters, + IDELanguageSettingsProvider, + IdeaEnvironment, builtIns, + delegateResolver, { _, c -> IDEPackagePartProvider(c.moduleContentScope) }, + analysisSettings.sdk?.let { SdkInfo(project, it) }, + modulePlatforms = { module -> module.platform?.multiTargetPlatform }, + packageOracleFactory = project.service() + ) if (providedBuiltIns == null && builtIns is JvmBuiltIns) { val sdkModuleDescriptor = analysisSettings.sdk!!.let { resolverForProject.descriptorForModule(SdkInfo(project, it)) } builtIns.initialize(sdkModuleDescriptor, analysisSettings.isAdditionalBuiltInFeaturesSupported) } - return ModuleResolverProviderImpl( + return ModuleResolverProvider( resolverForProject, builtIns, dependencies + listOf(globalContext.exceptionTracker) @@ -137,14 +133,8 @@ fun getAllProjectSdks(): Collection { } -interface ModuleResolverProvider { - val resolverForProject: ResolverForProject - val builtIns: KotlinBuiltIns - val cacheDependencies: Collection -} - -class ModuleResolverProviderImpl( - override val resolverForProject: ResolverForProject, - override val builtIns: KotlinBuiltIns, - override val cacheDependencies: Collection -) : ModuleResolverProvider +class ModuleResolverProvider( + val resolverForProject: ResolverForProject, + val builtIns: KotlinBuiltIns, + val cacheDependencies: Collection +) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt index 38c2013b03b..90f9ab00a76 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt @@ -22,6 +22,7 @@ import com.intellij.psi.util.CachedValuesManager import com.intellij.psi.util.PsiModificationTracker import com.intellij.util.containers.SLRUCache import org.jetbrains.kotlin.analyzer.AnalysisResult +import org.jetbrains.kotlin.analyzer.EmptyResolverForProject import org.jetbrains.kotlin.context.GlobalContextImpl import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.psi.KtElement @@ -49,16 +50,18 @@ internal class ProjectResolutionFacade( ) private fun computeModuleResolverProvider(): ModuleResolverProvider { - return globalResolveSessionProvider( + val delegateResolverProvider = reuseDataFrom?.moduleResolverProvider + val delegateResolverForProject = delegateResolverProvider?.resolverForProject ?: EmptyResolverForProject() + return createModuleResolverProvider( resolverDebugName, project, globalContext, settings, - moduleFilter = moduleFilter, - dependencies = dependencies, - reuseDataFrom = reuseDataFrom, + syntheticFiles = syntheticFiles, + delegateResolver = delegateResolverForProject, moduleFilter = moduleFilter, allModules = allModules, - syntheticFiles = syntheticFiles + providedBuiltIns = delegateResolverProvider?.builtIns, + dependencies = dependencies ) }