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.context.ModuleContext
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.ModuleDescriptorImpl
import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava
@@ -36,6 +37,7 @@ import kotlin.platform.platformStatic
public class JvmResolverForModule(
override val lazyResolveSession: ResolveSession,
override val packageFragmentProvider: PackageFragmentProvider,
public val javaDescriptorResolver: JavaDescriptorResolver
) : ResolverForModule
@@ -75,8 +77,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
val resolveSession = injector.getResolveSession()!!
val javaDescriptorResolver = injector.getJavaDescriptorResolver()!!
val providersForModule = listOf(resolveSession.getPackageFragmentProvider(), javaDescriptorResolver.packageFragmentProvider)
moduleDescriptor.initialize(CompositePackageFragmentProvider(providersForModule))
return JvmResolverForModule(resolveSession, javaDescriptorResolver)
return JvmResolverForModule(resolveSession, CompositePackageFragmentProvider(providersForModule), javaDescriptorResolver)
}
override val moduleParameters: ModuleParameters
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.context.withModule
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
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.ModuleDescriptorImpl
import org.jetbrains.kotlin.name.Name
@@ -34,6 +35,7 @@ import kotlin.properties.Delegates
public trait ResolverForModule {
public val lazyResolveSession: ResolveSession
public val packageFragmentProvider: PackageFragmentProvider
}
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),
modulesContent(module), platformParameters, resolverForProject
)
assert(descriptor.isInitialized, "ModuleDescriptorImpl#initialize() should be called in createResolverForModule")
descriptor.initialize(resolverForModule.packageFragmentProvider)
resolverForProject.resolverByModuleDescriptor[descriptor] = resolverForModule
}
}
@@ -64,7 +64,7 @@ public class ModuleDescriptorImpl(
})
}
public val isInitialized: Boolean
private val isInitialized: Boolean
get() = packageFragmentProviderForModuleContent != null
public fun setDependencies(dependencies: ModuleDependencies) {
@@ -22,6 +22,7 @@ import com.intellij.util.PathUtil
import org.jetbrains.kotlin.analyzer.*
import org.jetbrains.kotlin.context.ModuleContext
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.ModuleDescriptorImpl
import org.jetbrains.kotlin.di.InjectorForLazyResolve
@@ -36,10 +37,10 @@ import org.jetbrains.kotlin.types.DynamicTypesAllowed
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
public class JsResolverForModule(
override val lazyResolveSession: ResolveSession
override val lazyResolveSession: ResolveSession,
override val packageFragmentProvider: PackageFragmentProvider
) : ResolverForModule
public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAnalysisParameters> {
override fun <M : ModuleInfo> createResolverForModule(
@@ -72,8 +73,7 @@ public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAna
}
}
moduleDescriptor.initialize(packageFragmentProvider)
return JsResolverForModule(resolveSession)
return JsResolverForModule(resolveSession, packageFragmentProvider)
}
override val moduleParameters: ModuleParameters