Prettify TopDownAnalyzerFacadeFor{JVM,JS}

This commit is contained in:
Alexander Udalov
2016-09-26 18:49:41 +03:00
parent 4467e127f0
commit 9cfe0be98e
2 changed files with 39 additions and 92 deletions
@@ -17,14 +17,11 @@
package org.jetbrains.kotlin.js.analyze
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.context.*
import org.jetbrains.kotlin.context.ContextForNewModule
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.context.MutableModuleContext
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.frontend.js.di.*
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.frontend.js.di.createTopDownAnalyzerForJs
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult
import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.resolve.JsPlatform
@@ -32,32 +29,18 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
import org.jetbrains.kotlin.serialization.js.JsModuleDescriptor
import java.util.ArrayList
import java.util.Collections
object TopDownAnalyzerFacadeForJS {
@JvmStatic
fun analyzeFiles(files: Collection<KtFile>, config: JsConfig): JsAnalysisResult {
val trace = BindingTraceContext()
val newModuleContext = ContextForNewModule(
ProjectContext(config.project), Name.special("<" + config.moduleId + ">"), JsPlatform,
JsPlatform.builtIns
val context =
ContextForNewModule(ProjectContext(config.project), Name.special("<${config.moduleId}>"), JsPlatform, JsPlatform.builtIns)
context.setDependencies(
listOf(context.module) +
config.moduleDescriptors.map { it.data } +
listOf(JsPlatform.builtIns.builtInsModule)
)
newModuleContext.setDependencies(computeDependencies(newModuleContext.module, config))
return analyzeFilesWithGivenTrace(files, trace, newModuleContext, config)
}
private fun computeDependencies(module: ModuleDescriptorImpl, config: JsConfig): List<ModuleDescriptorImpl> {
val allDependencies = ArrayList<ModuleDescriptorImpl>()
allDependencies.add(module)
for (descriptor in config.moduleDescriptors) {
allDependencies.add(descriptor.data)
}
allDependencies.add(JsPlatform.builtIns.builtInsModule)
return allDependencies
return analyzeFilesWithGivenTrace(files, BindingTraceContext(), context, config)
}
@JvmStatic
@@ -68,13 +51,12 @@ object TopDownAnalyzerFacadeForJS {
config: JsConfig
): JsAnalysisResult {
val allFiles = JsConfig.withJsLibAdded(files, config)
val analyzerForJs = createTopDownAnalyzerForJs(
moduleContext, trace,
FileBasedDeclarationProviderFactory(moduleContext.storageManager, allFiles),
config.configuration.get<LanguageVersionSettings>(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
config.configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
)
analyzerForJs.analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, emptyList<PackageFragmentProvider>())
analyzerForJs.analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, emptyList())
return JsAnalysisResult.success(trace, moduleContext.module)
}