diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt index 349ed3ae486..5957d395754 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/TopDownAnalyzerFacadeForJVM.kt @@ -14,146 +14,135 @@ * limitations under the License. */ -package org.jetbrains.kotlin.resolve.jvm; +package org.jetbrains.kotlin.resolve.jvm -import com.intellij.openapi.project.Project; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.analyzer.AnalysisResult; -import org.jetbrains.kotlin.config.CommonConfigurationKeys; -import org.jetbrains.kotlin.config.CompilerConfiguration; -import org.jetbrains.kotlin.config.JVMConfigurationKeys; -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.context.ProjectContext; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.descriptors.PackageFragmentProvider; -import org.jetbrains.kotlin.descriptors.PackagePartProvider; -import org.jetbrains.kotlin.frontend.java.di.ContainerForTopDownAnalyzerForJvm; -import org.jetbrains.kotlin.frontend.java.di.InjectionKt; -import org.jetbrains.kotlin.incremental.components.LookupTracker; -import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider; -import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider; -import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache; -import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents; -import org.jetbrains.kotlin.modules.Module; -import org.jetbrains.kotlin.modules.TargetId; -import org.jetbrains.kotlin.modules.TargetIdKt; -import org.jetbrains.kotlin.name.Name; -import org.jetbrains.kotlin.platform.JvmBuiltIns; -import org.jetbrains.kotlin.psi.KtFile; -import org.jetbrains.kotlin.resolve.BindingContext; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.TopDownAnalysisMode; -import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension; -import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension; -import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform; -import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; +import com.intellij.openapi.project.Project +import com.intellij.psi.search.GlobalSearchScope +import org.jetbrains.kotlin.analyzer.AnalysisResult +import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.context.* +import org.jetbrains.kotlin.context.ModuleContext +import org.jetbrains.kotlin.context.MutableModuleContext +import org.jetbrains.kotlin.context.ProjectContext +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentProvider +import org.jetbrains.kotlin.descriptors.PackagePartProvider +import org.jetbrains.kotlin.frontend.java.di.ContainerForTopDownAnalyzerForJvm +import org.jetbrains.kotlin.frontend.java.di.* +import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider +import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider +import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache +import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents +import org.jetbrains.kotlin.modules.Module +import org.jetbrains.kotlin.modules.TargetId +import org.jetbrains.kotlin.modules.* +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.platform.JvmBuiltIns +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.BindingTrace +import org.jetbrains.kotlin.resolve.TopDownAnalysisMode +import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension +import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension +import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform +import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.ArrayList -public enum TopDownAnalyzerFacadeForJVM { +object TopDownAnalyzerFacadeForJVM { + @JvmStatic + fun analyzeFilesWithJavaIntegration( + moduleContext: ModuleContext, + files: Collection, + trace: BindingTrace, + configuration: CompilerConfiguration, + packagePartProvider: PackagePartProvider + ): AnalysisResult { + var packagePartProvider = packagePartProvider + val project = moduleContext.project - INSTANCE; + val providerFactory = FileBasedDeclarationProviderFactory(moduleContext.storageManager, files) - @NotNull - public static AnalysisResult analyzeFilesWithJavaIntegration( - @NotNull ModuleContext moduleContext, - @NotNull Collection files, - @NotNull BindingTrace trace, - @NotNull CompilerConfiguration configuration, - @NotNull PackagePartProvider packagePartProvider - ) { - Project project = moduleContext.getProject(); + val incrementalCompilationComponents = configuration.get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS) + val lookupTracker = if (incrementalCompilationComponents != null) + incrementalCompilationComponents.getLookupTracker() + else + LookupTracker.DO_NOTHING - FileBasedDeclarationProviderFactory providerFactory = - new FileBasedDeclarationProviderFactory(moduleContext.getStorageManager(), files); - - IncrementalCompilationComponents incrementalCompilationComponents = - configuration.get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS); - LookupTracker lookupTracker = - incrementalCompilationComponents != null - ? incrementalCompilationComponents.getLookupTracker() - : LookupTracker.Companion.getDO_NOTHING(); - - List targetIds = null; - List modules = configuration.get(JVMConfigurationKeys.MODULES); + var targetIds: MutableList? = null + val modules = configuration.get(JVMConfigurationKeys.MODULES) if (modules != null) { - targetIds = new ArrayList(modules.size()); + targetIds = ArrayList(modules.size) - for (Module module : modules) { - targetIds.add(TargetIdKt.TargetId(module)); + for (module in modules) { + targetIds.add(TargetId(module)) } } packagePartProvider = IncrementalPackagePartProvider.create( - packagePartProvider, files, targetIds, incrementalCompilationComponents, moduleContext.getStorageManager() - ); + packagePartProvider, files, targetIds, incrementalCompilationComponents, moduleContext.storageManager + ) - ContainerForTopDownAnalyzerForJvm container = InjectionKt.createContainerForTopDownAnalyzerForJvm( + val container = createContainerForTopDownAnalyzerForJvm( moduleContext, trace, providerFactory, GlobalSearchScope.allScope(project), lookupTracker, packagePartProvider, - configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT) - ); + configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT) + ) - List additionalProviders = new ArrayList(); + val additionalProviders = ArrayList() if (targetIds != null && incrementalCompilationComponents != null) { - for (TargetId targetId : targetIds) { - IncrementalCache incrementalCache = incrementalCompilationComponents.getIncrementalCache(targetId); + for (targetId in targetIds) { + val incrementalCache = incrementalCompilationComponents.getIncrementalCache(targetId) additionalProviders.add( - new IncrementalPackageFragmentProvider( - files, moduleContext.getModule(), moduleContext.getStorageManager(), - container.getDeserializationComponentsForJava().getComponents(), + IncrementalPackageFragmentProvider( + files, moduleContext.module, moduleContext.storageManager, + container.deserializationComponentsForJava.components, incrementalCache, targetId ) - ); + ) } } - additionalProviders.add(container.getJavaDescriptorResolver().getPackageFragmentProvider()); + additionalProviders.add(container.javaDescriptorResolver.packageFragmentProvider) - for (PackageFragmentProviderExtension extension : PackageFragmentProviderExtension.Companion.getInstances(project)) { - PackageFragmentProvider provider = extension.getPackageFragmentProvider( - project, moduleContext.getModule(), moduleContext.getStorageManager(), trace, null); - if (provider != null) additionalProviders.add(provider); + for (extension in PackageFragmentProviderExtension.getInstances(project)) { + val provider = extension.getPackageFragmentProvider( + project, moduleContext.module, moduleContext.storageManager, trace, null) + if (provider != null) additionalProviders.add(provider) } - container.getLazyTopDownAnalyzerForTopLevel().analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, additionalProviders); + container.lazyTopDownAnalyzerForTopLevel.analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, additionalProviders) - BindingContext bindingContext = trace.getBindingContext(); - ModuleDescriptor module = moduleContext.getModule(); + val bindingContext = trace.bindingContext + val module = moduleContext.module - Collection analysisCompletedHandlerExtensions = - AnalysisCompletedHandlerExtension.Companion.getInstances(moduleContext.getProject()); + val analysisCompletedHandlerExtensions = AnalysisCompletedHandlerExtension.getInstances(moduleContext.project) - for (AnalysisCompletedHandlerExtension extension : analysisCompletedHandlerExtensions) { - AnalysisResult result = extension.analysisCompleted(project, module, trace, files); - if (result != null) return result; + for (extension in analysisCompletedHandlerExtensions) { + val result = extension.analysisCompleted(project, module, trace, files) + if (result != null) return result } - return AnalysisResult.success(bindingContext, module); + return AnalysisResult.success(bindingContext, module) } - @NotNull - public static MutableModuleContext createContextWithSealedModule( - @NotNull Project project, @NotNull CompilerConfiguration configuration - ) { - ProjectContext projectContext = ContextKt.ProjectContext(project); - JvmBuiltIns builtIns = new JvmBuiltIns(projectContext.getStorageManager()); - MutableModuleContext context = ContextKt.ContextForNewModule( + @JvmStatic + fun createContextWithSealedModule( + project: Project, configuration: CompilerConfiguration + ): MutableModuleContext { + val projectContext = ProjectContext(project) + val builtIns = JvmBuiltIns(projectContext.storageManager) + val context = ContextForNewModule( projectContext, Name.special("<" + configuration.getNotNull(CommonConfigurationKeys.MODULE_NAME) + ">"), - JvmPlatform.INSTANCE, builtIns - ); - context.setDependencies(context.getModule(), builtIns.getBuiltInsModule()); - return context; + JvmPlatform, builtIns + ) + context.setDependencies(context.module, builtIns.builtInsModule) + return context } } diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt index cc7c4523d46..4de68d48365 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt @@ -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, 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 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 computeDependencies(ModuleDescriptorImpl module, @NotNull JsConfig config) { - List allDependencies = new ArrayList(); - allDependencies.add(module); - for (JsModuleDescriptor descriptor : config.getModuleDescriptors()) { - allDependencies.add(descriptor.getData()); + private fun computeDependencies(module: ModuleDescriptorImpl, config: JsConfig): List { + val allDependencies = ArrayList() + 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 files, - @NotNull BindingTrace trace, - @NotNull ModuleContext moduleContext, - @NotNull JsConfig config - ) { - Collection allFiles = JsConfig.withJsLibAdded(files, config); + @JvmStatic + fun analyzeFilesWithGivenTrace( + files: Collection, + 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.emptyList()); - return JsAnalysisResult.success(trace, moduleContext.getModule()); + FileBasedDeclarationProviderFactory(moduleContext.storageManager, allFiles), + config.configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT) + ) + analyzerForJs.analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, emptyList()) + return JsAnalysisResult.success(trace, moduleContext.module) } - public static void checkForErrors(@NotNull Collection allFiles, @NotNull BindingContext bindingContext) { - AnalyzingUtils.throwExceptionOnErrors(bindingContext); - for (KtFile file : allFiles) { - AnalyzingUtils.checkForSyntacticErrors(file); + @JvmStatic + fun checkForErrors(allFiles: Collection, bindingContext: BindingContext) { + AnalyzingUtils.throwExceptionOnErrors(bindingContext) + for (file in allFiles) { + AnalyzingUtils.checkForSyntacticErrors(file) } } }