diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt index 40da3f057ce..5e629545713 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt @@ -291,6 +291,12 @@ interface TrackableModuleInfo : ModuleInfo { fun createModificationTracker(): ModificationTracker } +interface LibraryModuleInfo : ModuleInfo { + override val platform: TargetPlatform + + fun getLibraryRoots(): Collection +} + abstract class ResolverForModuleFactory { abstract fun createResolverForModule( moduleDescriptor: ModuleDescriptorImpl, diff --git a/idea/ide-common/src/org/jetbrains/kotlin/caches/project/LibraryModuleInfo.kt b/idea/ide-common/src/org/jetbrains/kotlin/caches/project/LibraryModuleInfo.kt deleted file mode 100644 index cf9b1b77bb7..00000000000 --- a/idea/ide-common/src/org/jetbrains/kotlin/caches/project/LibraryModuleInfo.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.caches.project - -import org.jetbrains.kotlin.analyzer.ModuleInfo -import org.jetbrains.kotlin.resolve.TargetPlatform - -interface LibraryModuleInfo : ModuleInfo { - override val platform: TargetPlatform - - fun getLibraryRoots(): Collection -} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/JsPlatformKindResolution.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/JsPlatformKindResolution.kt index 21449a63858..6c31641d904 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/JsPlatformKindResolution.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/JsPlatformKindResolution.kt @@ -10,9 +10,9 @@ import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.analyzer.ResolverForModuleFactory import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.context.ProjectContext -import org.jetbrains.kotlin.idea.caches.resolve.JsAnalyzerFacade import org.jetbrains.kotlin.idea.caches.resolve.PlatformAnalysisSettings import org.jetbrains.kotlin.idea.framework.JSLibraryKind +import org.jetbrains.kotlin.js.resolve.JsAnalyzerFacade import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind @@ -32,4 +32,4 @@ class JsPlatformKindResolution : IdePlatformKindResolution { override fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns { return JsPlatform.builtIns } -} \ No newline at end of file +} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt index 7383fa42b61..e67e6ca26ef 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt @@ -23,11 +23,12 @@ import com.intellij.util.SmartList import org.jetbrains.jps.model.java.JavaSourceRootType import org.jetbrains.jps.model.module.JpsModuleSourceRootType import org.jetbrains.kotlin.analyzer.CombinedModuleInfo +import org.jetbrains.kotlin.analyzer.LibraryModuleInfo import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.analyzer.TrackableModuleInfo -import org.jetbrains.kotlin.caches.project.LibraryModuleInfo import org.jetbrains.kotlin.caches.resolve.resolution -import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.config.SourceKotlinRootType +import org.jetbrains.kotlin.config.TestSourceKotlinRootType import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.idea.caches.resolve.util.enlargedSearchScope import org.jetbrains.kotlin.idea.configuration.BuildSystemType diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt index c3af3fb1d67..d6247bd3aa4 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.gradle.KotlinPlatform -import org.jetbrains.kotlin.idea.caches.resolve.JsAnalyzerFacade import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JsCompilerArgumentsHolder import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription @@ -25,6 +24,7 @@ import org.jetbrains.kotlin.idea.js.KotlinJSRunConfigurationDataProvider import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling import org.jetbrains.kotlin.idea.run.multiplatform.KotlinMultiplatformRunLocationsProvider import org.jetbrains.kotlin.idea.util.string.joinWithEscape +import org.jetbrains.kotlin.js.resolve.JsAnalyzerFacade import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind import org.jetbrains.kotlin.psi.KtClassOrObject diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt.181 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt.181 index 194ed7a3109..a92575f794c 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt.181 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/platform/JsIdePlatformKindTooling.kt.181 @@ -15,7 +15,6 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.gradle.KotlinPlatform -import org.jetbrains.kotlin.idea.caches.resolve.JsAnalyzerFacade import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JsCompilerArgumentsHolder import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription @@ -24,6 +23,7 @@ import org.jetbrains.kotlin.idea.highlighter.KotlinTestRunLineMarkerContributor. import org.jetbrains.kotlin.idea.js.KotlinJSRunConfigurationDataProvider import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling import org.jetbrains.kotlin.idea.util.string.joinWithEscape +import org.jetbrains.kotlin.js.resolve.JsAnalyzerFacade import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind import org.jetbrains.kotlin.psi.KtClassOrObject diff --git a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsAnalyzerFacade.kt similarity index 73% rename from idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt rename to js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsAnalyzerFacade.kt index 15a3045b40d..e972d570f31 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsAnalyzerFacade.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. + * Copyright 2010-2017 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,10 +14,9 @@ * limitations under the License. */ -package org.jetbrains.kotlin.idea.caches.resolve +package org.jetbrains.kotlin.js.resolve import org.jetbrains.kotlin.analyzer.* -import org.jetbrains.kotlin.caches.project.LibraryModuleInfo import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.TargetPlatformVersion import org.jetbrains.kotlin.container.get @@ -26,7 +25,6 @@ import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.frontend.di.createContainerForLazyResolve import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.resolve.TargetPlatform @@ -68,22 +66,20 @@ object JsAnalyzerFacade : ResolverForModuleFactory() { ) var packageFragmentProvider = container.get().packageFragmentProvider - if (moduleInfo is LibraryModuleInfo && moduleInfo.platform == JsPlatform) { - val providers = moduleInfo.getLibraryRoots() - .flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) } - .filter { it.version.isCompatible() } - .map { metadata -> - val (header, packageFragmentProtos) = - KotlinJavascriptSerializationUtil.readModuleAsProto(metadata.body, metadata.version) - createKotlinJavascriptPackageFragmentProvider( - moduleContext.storageManager, moduleDescriptor, header, packageFragmentProtos, metadata.version, - container.get(), LookupTracker.DO_NOTHING - ) - } - - if (providers.isNotEmpty()) { - packageFragmentProvider = CompositePackageFragmentProvider(listOf(packageFragmentProvider) + providers) + val libraryProviders = (moduleInfo as? LibraryModuleInfo)?.getLibraryRoots().orEmpty() + .flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) } + .filter { it.version.isCompatible() } + .map { metadata -> + val (header, packageFragmentProtos) = + KotlinJavascriptSerializationUtil.readModuleAsProto(metadata.body, metadata.version) + createKotlinJavascriptPackageFragmentProvider( + moduleContext.storageManager, moduleDescriptor, header, packageFragmentProtos, metadata.version, + container.get(), LookupTracker.DO_NOTHING + ) } + + if (libraryProviders.isNotEmpty()) { + packageFragmentProvider = CompositePackageFragmentProvider(listOf(packageFragmentProvider) + libraryProviders) } return ResolverForModule(packageFragmentProvider, container)