Create built-ins via ProjectContext instead of GlobalContext

This commit is contained in:
Dmitriy Dolovov
2018-09-06 19:16:53 +03:00
committed by Mikhail Glukhikh
parent d8937936a9
commit 08a66b61c2
5 changed files with 17 additions and 14 deletions
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.analyzer.ResolverForModuleFactory
import org.jetbrains.kotlin.analyzer.common.CommonAnalyzerFacade
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.context.GlobalContextImpl
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.idea.caches.resolve.PlatformAnalysisSettings
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
@@ -19,7 +19,7 @@ class CommonPlatformKindResolution : IdePlatformKindResolution {
override val resolverForModuleFactory: ResolverForModuleFactory
get() = CommonAnalyzerFacade
override fun createBuiltIns(settings: PlatformAnalysisSettings, sdkContext: GlobalContextImpl): KotlinBuiltIns {
override fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns {
return DefaultBuiltIns.Instance
}
}
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.caches.resolve
import org.jetbrains.kotlin.extensions.ApplicationExtensionDescriptor
import org.jetbrains.kotlin.analyzer.ResolverForModuleFactory
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.context.GlobalContextImpl
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.idea.caches.resolve.PlatformAnalysisSettings
import org.jetbrains.kotlin.platform.IdePlatformKind
@@ -28,7 +28,7 @@ interface IdePlatformKindResolution {
val resolverForModuleFactory: ResolverForModuleFactory
fun createBuiltIns(settings: PlatformAnalysisSettings, sdkContext: GlobalContextImpl): KotlinBuiltIns
fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns
companion object : ApplicationExtensionDescriptor<IdePlatformKindResolution>(
"org.jetbrains.kotlin.idePlatformKindResolution", IdePlatformKindResolution::class.java
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.caches.resolve
import org.jetbrains.kotlin.analyzer.ResolverForModuleFactory
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.context.GlobalContextImpl
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.idea.caches.resolve.JsAnalyzerFacade
import org.jetbrains.kotlin.idea.caches.resolve.PlatformAnalysisSettings
import org.jetbrains.kotlin.js.resolve.JsPlatform
@@ -19,7 +19,7 @@ class JsPlatformKindResolution : IdePlatformKindResolution {
override val resolverForModuleFactory: ResolverForModuleFactory
get() = JsAnalyzerFacade
override fun createBuiltIns(settings: PlatformAnalysisSettings, sdkContext: GlobalContextImpl): KotlinBuiltIns {
override fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns {
return JsPlatform.builtIns
}
}
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.analyzer.ResolverForModuleFactory
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
import org.jetbrains.kotlin.context.GlobalContextImpl
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.idea.caches.resolve.PlatformAnalysisSettings
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
@@ -20,7 +20,7 @@ class JvmPlatformKindResolution : IdePlatformKindResolution {
override val resolverForModuleFactory: ResolverForModuleFactory
get() = JvmAnalyzerFacade
override fun createBuiltIns(settings: PlatformAnalysisSettings, sdkContext: GlobalContextImpl): KotlinBuiltIns {
return if (settings.sdk != null) JvmBuiltIns(sdkContext.storageManager) else DefaultBuiltIns.Instance
override fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns {
return if (settings.sdk != null) JvmBuiltIns(projectContext.storageManager) else DefaultBuiltIns.Instance
}
}
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
import org.jetbrains.kotlin.caches.resolve.resolution
import org.jetbrains.kotlin.context.GlobalContextImpl
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.context.withProject
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.idea.caches.project.*
@@ -101,10 +102,11 @@ internal class ProjectResolutionFacade(
delegateResolverForProject = EmptyResolverForProject()
delegateBuiltIns = null
}
val projectContext = globalContext.withProject(project)
val builtIns = delegateBuiltIns ?: createBuiltIns(
settings,
globalContext
projectContext
)
val allModuleInfos = (allModules ?: getModuleInfosFromIdeaModel(project, settings.platform)).toMutableSet()
@@ -133,7 +135,7 @@ internal class ProjectResolutionFacade(
val resolverForProject = ResolverForProjectImpl(
resolverDebugName,
globalContext.withProject(project),
projectContext,
modulesToCreateResolversFor,
modulesContentFactory,
modulePlatforms = { module -> module.platform?.multiTargetPlatform },
@@ -179,7 +181,8 @@ internal class ProjectResolutionFacade(
?: cachedResolverForProject.diagnoseUnknownModuleInfo(infos.toList())
}
internal fun resolverForDescriptor(moduleDescriptor: ModuleDescriptor) = cachedResolverForProject.resolverForModuleDescriptor(moduleDescriptor)
internal fun resolverForDescriptor(moduleDescriptor: ModuleDescriptor) =
cachedResolverForProject.resolverForModuleDescriptor(moduleDescriptor)
internal fun findModuleDescriptor(ideaModuleInfo: IdeaModuleInfo): ModuleDescriptor {
return cachedResolverForProject.descriptorForModule(ideaModuleInfo)
@@ -211,8 +214,8 @@ internal class ProjectResolutionFacade(
}
private companion object {
private fun createBuiltIns(settings: PlatformAnalysisSettings, sdkContext: GlobalContextImpl): KotlinBuiltIns {
return settings.platform.idePlatformKind.resolution.createBuiltIns(settings, sdkContext)
private fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns {
return settings.platform.idePlatformKind.resolution.createBuiltIns(settings, projectContext)
}
}
}