J2K TopDownAnalyzerFacadeFor{JVM,JS}: convert to Kotlin
This commit is contained in:
@@ -14,80 +14,75 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.js.analyze;
|
||||
package org.jetbrains.kotlin.js.analyze
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys;
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl;
|
||||
import org.jetbrains.kotlin.context.ContextKt;
|
||||
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.InjectionKt;
|
||||
import org.jetbrains.kotlin.js.analyzer.JsAnalysisResult;
|
||||
import org.jetbrains.kotlin.js.config.JsConfig;
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatform;
|
||||
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 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.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.js.analyzer.JsAnalysisResult
|
||||
import org.jetbrains.kotlin.js.config.JsConfig
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
||||
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.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList
|
||||
import java.util.Collections
|
||||
|
||||
public final class TopDownAnalyzerFacadeForJS {
|
||||
private TopDownAnalyzerFacadeForJS() {
|
||||
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
|
||||
)
|
||||
newModuleContext.setDependencies(computeDependencies(newModuleContext.module, config))
|
||||
return analyzeFilesWithGivenTrace(files, trace, newModuleContext, config)
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsAnalysisResult analyzeFiles(@NotNull Collection<KtFile> files, @NotNull JsConfig config) {
|
||||
BindingTrace trace = new BindingTraceContext();
|
||||
|
||||
MutableModuleContext newModuleContext = ContextKt.ContextForNewModule(
|
||||
ContextKt.ProjectContext(config.getProject()), Name.special("<" + config.getModuleId() + ">"), JsPlatform.INSTANCE,
|
||||
JsPlatform.INSTANCE.getBuiltIns()
|
||||
);
|
||||
newModuleContext.setDependencies(computeDependencies(newModuleContext.getModule(), config));
|
||||
return analyzeFilesWithGivenTrace(files, trace, newModuleContext, config);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static List<ModuleDescriptorImpl> computeDependencies(ModuleDescriptorImpl module, @NotNull JsConfig config) {
|
||||
List<ModuleDescriptorImpl> allDependencies = new ArrayList<ModuleDescriptorImpl>();
|
||||
allDependencies.add(module);
|
||||
for (JsModuleDescriptor<ModuleDescriptorImpl> descriptor : config.getModuleDescriptors()) {
|
||||
allDependencies.add(descriptor.getData());
|
||||
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.INSTANCE.getBuiltIns().getBuiltInsModule());
|
||||
return allDependencies;
|
||||
allDependencies.add(JsPlatform.builtIns.builtInsModule)
|
||||
return allDependencies
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsAnalysisResult analyzeFilesWithGivenTrace(
|
||||
@NotNull Collection<KtFile> files,
|
||||
@NotNull BindingTrace trace,
|
||||
@NotNull ModuleContext moduleContext,
|
||||
@NotNull JsConfig config
|
||||
) {
|
||||
Collection<KtFile> allFiles = JsConfig.withJsLibAdded(files, config);
|
||||
@JvmStatic
|
||||
fun analyzeFilesWithGivenTrace(
|
||||
files: Collection<KtFile>,
|
||||
trace: BindingTrace,
|
||||
moduleContext: ModuleContext,
|
||||
config: JsConfig
|
||||
): JsAnalysisResult {
|
||||
val allFiles = JsConfig.withJsLibAdded(files, config)
|
||||
|
||||
LazyTopDownAnalyzerForTopLevel analyzerForJs = InjectionKt.createTopDownAnalyzerForJs(
|
||||
val analyzerForJs = createTopDownAnalyzerForJs(
|
||||
moduleContext, trace,
|
||||
new FileBasedDeclarationProviderFactory(moduleContext.getStorageManager(), allFiles),
|
||||
config.getConfiguration().get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
|
||||
);
|
||||
analyzerForJs.analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, Collections.<PackageFragmentProvider>emptyList());
|
||||
return JsAnalysisResult.success(trace, moduleContext.getModule());
|
||||
FileBasedDeclarationProviderFactory(moduleContext.storageManager, allFiles),
|
||||
config.configuration.get<LanguageVersionSettings>(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
|
||||
)
|
||||
analyzerForJs.analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, emptyList<PackageFragmentProvider>())
|
||||
return JsAnalysisResult.success(trace, moduleContext.module)
|
||||
}
|
||||
|
||||
public static void checkForErrors(@NotNull Collection<KtFile> allFiles, @NotNull BindingContext bindingContext) {
|
||||
AnalyzingUtils.throwExceptionOnErrors(bindingContext);
|
||||
for (KtFile file : allFiles) {
|
||||
AnalyzingUtils.checkForSyntacticErrors(file);
|
||||
@JvmStatic
|
||||
fun checkForErrors(allFiles: Collection<KtFile>, bindingContext: BindingContext) {
|
||||
AnalyzingUtils.throwExceptionOnErrors(bindingContext)
|
||||
for (file in allFiles) {
|
||||
AnalyzingUtils.checkForSyntacticErrors(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user