ModuleResolverProvider: ResolveSessionForBodies are created lazily
This commit is contained in:
+7
-4
@@ -73,8 +73,10 @@ fun createModuleResolverProvider(
|
|||||||
val moduleDescriptors = modulesToCreateResolversFor.map { resolverForProject.descriptorForModule(it) }
|
val moduleDescriptors = modulesToCreateResolversFor.map { resolverForProject.descriptorForModule(it) }
|
||||||
val resolveSessionsForBodyByDescriptor = moduleDescriptors.keysToMap {
|
val resolveSessionsForBodyByDescriptor = moduleDescriptors.keysToMap {
|
||||||
descriptor ->
|
descriptor ->
|
||||||
val analyzer = resolverForProject.resolverForModuleDescriptor(descriptor)
|
globalContext.storageManager.createLazyValue {
|
||||||
ResolveSessionForBodies(project, analyzer.lazyResolveSession)
|
val analyzer = resolverForProject.resolverForModuleDescriptor(descriptor)
|
||||||
|
ResolveSessionForBodies(project, analyzer.lazyResolveSession)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ModuleResolverProviderImpl(
|
return ModuleResolverProviderImpl(
|
||||||
resolverForProject,
|
resolverForProject,
|
||||||
@@ -134,14 +136,15 @@ object EmptyModuleResolverProvider: ModuleResolverProvider {
|
|||||||
|
|
||||||
class ModuleResolverProviderImpl(
|
class ModuleResolverProviderImpl(
|
||||||
override val resolverForProject: ResolverForProject<IdeaModuleInfo, ResolverForModule>,
|
override val resolverForProject: ResolverForProject<IdeaModuleInfo, ResolverForModule>,
|
||||||
private val bodiesResolveByDescriptor: Map<ModuleDescriptor, ResolveSessionForBodies>,
|
private val bodiesResolveByDescriptor: Map<ModuleDescriptor, () -> ResolveSessionForBodies>,
|
||||||
val globalContext: GlobalContextImpl,
|
val globalContext: GlobalContextImpl,
|
||||||
val delegateProvider: ModuleResolverProvider = EmptyModuleResolverProvider
|
val delegateProvider: ModuleResolverProvider = EmptyModuleResolverProvider
|
||||||
): ModuleResolverProvider {
|
): ModuleResolverProvider {
|
||||||
override val exceptionTracker: ExceptionTracker = globalContext.exceptionTracker
|
override val exceptionTracker: ExceptionTracker = globalContext.exceptionTracker
|
||||||
|
|
||||||
override fun resolveSessionForBodiesByDescriptor(descriptor: ModuleDescriptor): ResolveSessionForBodies {
|
override fun resolveSessionForBodiesByDescriptor(descriptor: ModuleDescriptor): ResolveSessionForBodies {
|
||||||
return bodiesResolveByDescriptor[descriptor] ?: delegateProvider.resolveSessionForBodiesByDescriptor(descriptor)
|
val computation = bodiesResolveByDescriptor[descriptor] ?: return delegateProvider.resolveSessionForBodiesByDescriptor(descriptor)
|
||||||
|
return computation()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user