Refactor AnalyzerFacade: move module.initialize() outside of createResolverForModule()

This commit is contained in:
Pavel V. Talanov
2015-06-15 18:42:24 +03:00
parent 997a6f1381
commit 96199ecc1f
4 changed files with 11 additions and 8 deletions
@@ -21,6 +21,7 @@ import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.* import org.jetbrains.kotlin.analyzer.*
import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.ModuleParameters import org.jetbrains.kotlin.descriptors.ModuleParameters
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava
@@ -36,6 +37,7 @@ import kotlin.platform.platformStatic
public class JvmResolverForModule( public class JvmResolverForModule(
override val lazyResolveSession: ResolveSession, override val lazyResolveSession: ResolveSession,
override val packageFragmentProvider: PackageFragmentProvider,
public val javaDescriptorResolver: JavaDescriptorResolver public val javaDescriptorResolver: JavaDescriptorResolver
) : ResolverForModule ) : ResolverForModule
@@ -75,8 +77,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
val resolveSession = injector.getResolveSession()!! val resolveSession = injector.getResolveSession()!!
val javaDescriptorResolver = injector.getJavaDescriptorResolver()!! val javaDescriptorResolver = injector.getJavaDescriptorResolver()!!
val providersForModule = listOf(resolveSession.getPackageFragmentProvider(), javaDescriptorResolver.packageFragmentProvider) val providersForModule = listOf(resolveSession.getPackageFragmentProvider(), javaDescriptorResolver.packageFragmentProvider)
moduleDescriptor.initialize(CompositePackageFragmentProvider(providersForModule)) return JvmResolverForModule(resolveSession, CompositePackageFragmentProvider(providersForModule), javaDescriptorResolver)
return JvmResolverForModule(resolveSession, javaDescriptorResolver)
} }
override val moduleParameters: ModuleParameters override val moduleParameters: ModuleParameters
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.context.withModule import org.jetbrains.kotlin.context.withModule
import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.ModuleParameters import org.jetbrains.kotlin.descriptors.ModuleParameters
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.LazyModuleDependencies import org.jetbrains.kotlin.descriptors.impl.LazyModuleDependencies
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
@@ -34,6 +35,7 @@ import kotlin.properties.Delegates
public trait ResolverForModule { public trait ResolverForModule {
public val lazyResolveSession: ResolveSession public val lazyResolveSession: ResolveSession
public val packageFragmentProvider: PackageFragmentProvider
} }
public trait ResolverForProject<M : ModuleInfo,out R : ResolverForModule> { public trait ResolverForProject<M : ModuleInfo,out R : ResolverForModule> {
@@ -178,7 +180,7 @@ public trait AnalyzerFacade<A : ResolverForModule, in P : PlatformAnalysisParame
module, descriptor, projectContext.withModule(descriptor), module, descriptor, projectContext.withModule(descriptor),
modulesContent(module), platformParameters, resolverForProject modulesContent(module), platformParameters, resolverForProject
) )
assert(descriptor.isInitialized, "ModuleDescriptorImpl#initialize() should be called in createResolverForModule") descriptor.initialize(resolverForModule.packageFragmentProvider)
resolverForProject.resolverByModuleDescriptor[descriptor] = resolverForModule resolverForProject.resolverByModuleDescriptor[descriptor] = resolverForModule
} }
} }
@@ -64,7 +64,7 @@ public class ModuleDescriptorImpl(
}) })
} }
public val isInitialized: Boolean private val isInitialized: Boolean
get() = packageFragmentProviderForModuleContent != null get() = packageFragmentProviderForModuleContent != null
public fun setDependencies(dependencies: ModuleDependencies) { public fun setDependencies(dependencies: ModuleDependencies) {
@@ -22,6 +22,7 @@ import com.intellij.util.PathUtil
import org.jetbrains.kotlin.analyzer.* import org.jetbrains.kotlin.analyzer.*
import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.ModuleParameters import org.jetbrains.kotlin.descriptors.ModuleParameters
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.di.InjectorForLazyResolve import org.jetbrains.kotlin.di.InjectorForLazyResolve
@@ -36,10 +37,10 @@ import org.jetbrains.kotlin.types.DynamicTypesAllowed
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
public class JsResolverForModule( public class JsResolverForModule(
override val lazyResolveSession: ResolveSession override val lazyResolveSession: ResolveSession,
override val packageFragmentProvider: PackageFragmentProvider
) : ResolverForModule ) : ResolverForModule
public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAnalysisParameters> { public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAnalysisParameters> {
override fun <M : ModuleInfo> createResolverForModule( override fun <M : ModuleInfo> createResolverForModule(
@@ -72,8 +73,7 @@ public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAna
} }
} }
moduleDescriptor.initialize(packageFragmentProvider) return JsResolverForModule(resolveSession, packageFragmentProvider)
return JsResolverForModule(resolveSession)
} }
override val moduleParameters: ModuleParameters override val moduleParameters: ModuleParameters