Fix problem with several runtimes configured

This commit is contained in:
Pavel V. Talanov
2014-12-24 20:53:33 +03:00
parent 63e957559e
commit 2fe77d2c6c
4 changed files with 14 additions and 2 deletions
@@ -34,6 +34,7 @@ import org.jetbrains.jet.analyzer.ModuleInfo
import org.jetbrains.jet.analyzer.ModuleContent
import org.jetbrains.jet.di.InjectorForLazyResolveWithJava
import org.jetbrains.jet.lang.resolve.CodeAnalyzerInitializer
import com.intellij.psi.search.GlobalSearchScope
public class JvmResolverForModule(
override val lazyResolveSession: ResolveSession,
@@ -47,6 +48,7 @@ public class JvmPlatformParameters(
public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatformParameters> {
override fun <M : ModuleInfo> createResolverForModule(
moduleInfo: M,
project: Project,
globalContext: GlobalContext,
moduleDescriptor: ModuleDescriptorImpl,
@@ -56,7 +58,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
): JvmResolverForModule {
val (syntheticFiles, moduleContentScope) = moduleContent
val declarationProviderFactory = DeclarationProviderFactoryService.createDeclarationProviderFactory(
project, globalContext.storageManager, syntheticFiles, moduleContentScope
project, globalContext.storageManager, syntheticFiles, if (moduleInfo.isLibrary) GlobalSearchScope.EMPTY_SCOPE else moduleContentScope
)
val moduleClassResolver = ModuleClassResolverImpl { javaClass ->
@@ -83,6 +83,8 @@ public data class ModuleContent(
public trait PlatformAnalysisParameters
public trait ModuleInfo {
public val isLibrary: Boolean
get() = false
public val name: Name
public fun dependencies(): List<ModuleInfo>
public fun friends(): Collection<ModuleInfo> = listOf()
@@ -170,7 +172,7 @@ public trait AnalyzerFacade<A : ResolverForModule, in P : PlatformAnalysisParame
module ->
val descriptor = resolverForProject.descriptorForModule(module)
val resolverForModule = createResolverForModule(
project, globalContext, descriptor, modulesContent(module), platformParameters, resolverForProject
module, project, globalContext, descriptor, modulesContent(module), platformParameters, resolverForProject
)
assert(descriptor.isInitialized, "ModuleDescriptorImpl#initialize() should be called in createResolverForModule")
resolverForProject.resolverByModuleDescriptor[descriptor] = resolverForModule
@@ -182,6 +184,7 @@ public trait AnalyzerFacade<A : ResolverForModule, in P : PlatformAnalysisParame
}
protected fun <M : ModuleInfo> createResolverForModule(
moduleInfo: M,
project: Project,
globalContext: GlobalContext,
moduleDescriptor: ModuleDescriptorImpl,
@@ -136,6 +136,9 @@ public data class LibraryInfo(val project: Project, val library: Library) : Idea
override fun contentScope() = LibraryWithoutSourceScope(project, library)
override val isLibrary: Boolean
get() = true
override fun dependencies(): List<IdeaModuleInfo> {
val result = LinkedHashSet<IdeaModuleInfo>()
result.add(this)
@@ -156,6 +159,9 @@ private data class LibrarySourceInfo(val project: Project, val library: Library)
override fun contentScope() = GlobalSearchScope.EMPTY_SCOPE
override val isLibrary: Boolean
get() = true
override fun dependencies(): List<IdeaModuleInfo> {
return listOf(this) + LibraryInfo(project, library).dependencies()
}
@@ -42,6 +42,7 @@ public class JsResolverForModule(
public object JsAnalyzerFacade : AnalyzerFacade<JsResolverForModule, PlatformAnalysisParameters> {
override fun <M : ModuleInfo> createResolverForModule(
moduleInfo: M,
project: Project,
globalContext: GlobalContext,
moduleDescriptor: ModuleDescriptorImpl,