Move JsAnalyzerFacade from ide-common to js.frontend
To be used in diagnostic tests now, and as a replacement for TopDownAnalyzerFacadeForJS in the future
This commit is contained in:
@@ -291,6 +291,12 @@ interface TrackableModuleInfo : ModuleInfo {
|
|||||||
fun createModificationTracker(): ModificationTracker
|
fun createModificationTracker(): ModificationTracker
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface LibraryModuleInfo : ModuleInfo {
|
||||||
|
override val platform: TargetPlatform
|
||||||
|
|
||||||
|
fun getLibraryRoots(): Collection<String>
|
||||||
|
}
|
||||||
|
|
||||||
abstract class ResolverForModuleFactory {
|
abstract class ResolverForModuleFactory {
|
||||||
abstract fun <M : ModuleInfo> createResolverForModule(
|
abstract fun <M : ModuleInfo> createResolverForModule(
|
||||||
moduleDescriptor: ModuleDescriptorImpl,
|
moduleDescriptor: ModuleDescriptorImpl,
|
||||||
|
|||||||
@@ -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<String>
|
|
||||||
}
|
|
||||||
+2
-2
@@ -10,9 +10,9 @@ import com.intellij.openapi.vfs.VirtualFile
|
|||||||
import org.jetbrains.kotlin.analyzer.ResolverForModuleFactory
|
import org.jetbrains.kotlin.analyzer.ResolverForModuleFactory
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
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.caches.resolve.PlatformAnalysisSettings
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
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.js.resolve.JsPlatform
|
||||||
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
||||||
|
|
||||||
@@ -32,4 +32,4 @@ class JsPlatformKindResolution : IdePlatformKindResolution {
|
|||||||
override fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns {
|
override fun createBuiltIns(settings: PlatformAnalysisSettings, projectContext: ProjectContext): KotlinBuiltIns {
|
||||||
return JsPlatform.builtIns
|
return JsPlatform.builtIns
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,11 +23,12 @@ import com.intellij.util.SmartList
|
|||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
import org.jetbrains.kotlin.analyzer.CombinedModuleInfo
|
import org.jetbrains.kotlin.analyzer.CombinedModuleInfo
|
||||||
|
import org.jetbrains.kotlin.analyzer.LibraryModuleInfo
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
import org.jetbrains.kotlin.analyzer.TrackableModuleInfo
|
import org.jetbrains.kotlin.analyzer.TrackableModuleInfo
|
||||||
import org.jetbrains.kotlin.caches.project.LibraryModuleInfo
|
|
||||||
import org.jetbrains.kotlin.caches.resolve.resolution
|
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.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.util.enlargedSearchScope
|
import org.jetbrains.kotlin.idea.caches.resolve.util.enlargedSearchScope
|
||||||
import org.jetbrains.kotlin.idea.configuration.BuildSystemType
|
import org.jetbrains.kotlin.idea.configuration.BuildSystemType
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes
|
import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
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.compiler.configuration.Kotlin2JsCompilerArgumentsHolder
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription
|
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.platform.IdePlatformKindTooling
|
||||||
import org.jetbrains.kotlin.idea.run.multiplatform.KotlinMultiplatformRunLocationsProvider
|
import org.jetbrains.kotlin.idea.run.multiplatform.KotlinMultiplatformRunLocationsProvider
|
||||||
import org.jetbrains.kotlin.idea.util.string.joinWithEscape
|
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.name.FqName
|
||||||
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes
|
import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
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.compiler.configuration.Kotlin2JsCompilerArgumentsHolder
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription
|
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.js.KotlinJSRunConfigurationDataProvider
|
||||||
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
||||||
import org.jetbrains.kotlin.idea.util.string.joinWithEscape
|
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.name.FqName
|
||||||
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
|
|||||||
+15
-19
@@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,10 +14,9 @@
|
|||||||
* limitations under the License.
|
* 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.analyzer.*
|
||||||
import org.jetbrains.kotlin.caches.project.LibraryModuleInfo
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
import org.jetbrains.kotlin.config.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.container.get
|
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.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.frontend.di.createContainerForLazyResolve
|
import org.jetbrains.kotlin.frontend.di.createContainerForLazyResolve
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
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.BindingTraceContext
|
||||||
import org.jetbrains.kotlin.resolve.TargetEnvironment
|
import org.jetbrains.kotlin.resolve.TargetEnvironment
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
@@ -68,22 +66,20 @@ object JsAnalyzerFacade : ResolverForModuleFactory() {
|
|||||||
)
|
)
|
||||||
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
|
||||||
|
|
||||||
if (moduleInfo is LibraryModuleInfo && moduleInfo.platform == JsPlatform) {
|
val libraryProviders = (moduleInfo as? LibraryModuleInfo)?.getLibraryRoots().orEmpty()
|
||||||
val providers = moduleInfo.getLibraryRoots()
|
.flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) }
|
||||||
.flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) }
|
.filter { it.version.isCompatible() }
|
||||||
.filter { it.version.isCompatible() }
|
.map { metadata ->
|
||||||
.map { metadata ->
|
val (header, packageFragmentProtos) =
|
||||||
val (header, packageFragmentProtos) =
|
KotlinJavascriptSerializationUtil.readModuleAsProto(metadata.body, metadata.version)
|
||||||
KotlinJavascriptSerializationUtil.readModuleAsProto(metadata.body, metadata.version)
|
createKotlinJavascriptPackageFragmentProvider(
|
||||||
createKotlinJavascriptPackageFragmentProvider(
|
moduleContext.storageManager, moduleDescriptor, header, packageFragmentProtos, metadata.version,
|
||||||
moduleContext.storageManager, moduleDescriptor, header, packageFragmentProtos, metadata.version,
|
container.get(), LookupTracker.DO_NOTHING
|
||||||
container.get(), LookupTracker.DO_NOTHING
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (providers.isNotEmpty()) {
|
|
||||||
packageFragmentProvider = CompositePackageFragmentProvider(listOf(packageFragmentProvider) + providers)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (libraryProviders.isNotEmpty()) {
|
||||||
|
packageFragmentProvider = CompositePackageFragmentProvider(listOf(packageFragmentProvider) + libraryProviders)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ResolverForModule(packageFragmentProvider, container)
|
return ResolverForModule(packageFragmentProvider, container)
|
||||||
Reference in New Issue
Block a user