diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt index c8fc1ae0c0b..04770b9af5e 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt @@ -128,6 +128,7 @@ interface ModuleInfo { get() = false val name: Name fun dependencies(): List + val platform: TargetPlatform? get() = null fun modulesWhoseInternalsAreVisible(): Collection = listOf() fun dependencyOnBuiltIns(): DependencyOnBuiltIns = DependenciesOnBuiltIns.LAST val capabilities: Map, Any?> diff --git a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt b/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt index 837c7b366c7..47e0691da92 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt @@ -71,7 +71,7 @@ object JsAnalyzerFacade : AnalyzerFacade() { ) var packageFragmentProvider = container.get().packageFragmentProvider - if (moduleInfo is LibraryModuleInfo && moduleInfo.libraryPlatform == JsPlatform) { + if (moduleInfo is LibraryModuleInfo && moduleInfo.platform == JsPlatform) { val providers = moduleInfo.getLibraryRoots() .flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) } .filter { it.version.isCompatible() } diff --git a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/LibraryModuleInfo.kt b/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/LibraryModuleInfo.kt index f0e584309cf..3b998220ba7 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/LibraryModuleInfo.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/LibraryModuleInfo.kt @@ -20,7 +20,7 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.resolve.TargetPlatform interface LibraryModuleInfo : ModuleInfo { - val libraryPlatform: TargetPlatform + override val platform: TargetPlatform fun getLibraryRoots(): Collection } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt index d576e89d654..5b9c023a399 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt @@ -98,8 +98,12 @@ private fun ideaModelDependencies(module: Module, productionOnly: Boolean): List interface ModuleSourceInfo : IdeaModuleInfo { val module: Module + override val moduleOrigin: ModuleOrigin get() = ModuleOrigin.MODULE + + override val platform: TargetPlatform + get() = TargetPlatformDetector.getPlatform(module) } data class ModuleProductionSourceInfo(override val module: Module) : ModuleSourceInfo { @@ -201,7 +205,7 @@ class LibraryInfo(val project: Project, val library: Library) : IdeaModuleInfo, return result.toList() } - override val libraryPlatform: TargetPlatform + override val platform: TargetPlatform get() = TargetPlatformDetector.getPlatform(library) override val sourcesModuleInfo: SourceForBinaryModuleInfo diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt index f7503a05c46..22d16258031 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt @@ -28,12 +28,10 @@ import org.jetbrains.kotlin.analyzer.ModuleContent import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.analyzer.ResolverForProject import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.caches.resolve.LibraryModuleInfo import org.jetbrains.kotlin.context.GlobalContextImpl import org.jetbrains.kotlin.context.withProject import org.jetbrains.kotlin.idea.project.AnalyzerFacadeProvider import org.jetbrains.kotlin.idea.project.IdeaEnvironment -import org.jetbrains.kotlin.idea.project.TargetPlatformDetector import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl import org.jetbrains.kotlin.psi.KtFile @@ -82,11 +80,11 @@ fun createModuleResolverProvider( return AnalyzerFacade.setupResolverForProject( debugName, globalContext.withProject(project), modulesToCreateResolversFor, - { module -> AnalyzerFacadeProvider.getAnalyzerFacade(module.getTargetPlatform() ?: platform) }, + { module -> AnalyzerFacadeProvider.getAnalyzerFacade(module.platform ?: platform) }, modulesContent, jvmPlatformParameters, IdeaEnvironment, builtInsProvider, delegateResolver, { _, c -> IDEPackagePartProvider(c.moduleContentScope) }, sdk?.let { SdkInfo(project, it) }, - modulePlatforms = { module -> module.getTargetPlatform()?.multiTargetPlatform } + modulePlatforms = { module -> module.platform?.multiTargetPlatform } ) } @@ -105,13 +103,6 @@ fun createModuleResolverProvider( ) } -private fun ModuleInfo.getTargetPlatform(): TargetPlatform? = - when (this) { - is ModuleSourceInfo -> TargetPlatformDetector.getPlatform(module) - is LibraryModuleInfo -> libraryPlatform - else -> null - } - fun collectAllModuleInfosFromIdeaModel(project: Project): List { val ideaModules = ModuleManager.getInstance(project).modules.toList() val modulesSourcesInfos = ideaModules.flatMap { listOf(it.productionSourceInfo(), it.testSourceInfo()) }