From 0250ea861c5d8fd53d86dc8a605ce2a8c61f2a11 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 26 Sep 2016 18:55:35 +0300 Subject: [PATCH] Simplify return types of createContainer* functions --- .../cli/jvm/repl/CliReplAnalyzerEngine.kt | 13 ++++++----- .../kotlin/cli/jvm/repl/di/injection.kt | 22 +++++-------------- .../kotlin/frontend/java/di/injection.kt | 16 ++++---------- .../jvm/TopDownAnalyzerFacadeForJVM.kt | 9 +++++--- ...tionalBuiltInsMembersSignatureListsTest.kt | 4 +++- .../AbstractLocalClassProtoTest.kt | 7 ++++-- .../AbstractBuiltInsWithJDKMembersTest.kt | 4 +++- 7 files changed, 33 insertions(+), 42 deletions(-) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt index c3b62ba355a..74bf0485750 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/CliReplAnalyzerEngine.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.repl.di.createContainerForReplWithJava +import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.descriptors.ScriptDescriptor import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl @@ -30,6 +31,7 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics +import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.data.KtClassLikeInfo @@ -60,19 +62,18 @@ class CliReplAnalyzerEngine(environment: KotlinCoreEnvironment) { JvmPackagePartProvider(environment) ) + this.resolveSession = container.get() this.topDownAnalysisContext = TopDownAnalysisContext( - TopDownAnalysisMode.LocalDeclarations, DataFlowInfoFactory.EMPTY, container.resolveSession.declarationScopeProvider + TopDownAnalysisMode.LocalDeclarations, DataFlowInfoFactory.EMPTY, resolveSession.declarationScopeProvider ) - this.topDownAnalyzer = container.lazyTopDownAnalyzerForTopLevel - this.resolveSession = container.resolveSession + this.topDownAnalyzer = container.get() moduleContext.initializeModuleContents(CompositePackageFragmentProvider( listOf( - container.resolveSession.packageFragmentProvider, - container.javaDescriptorResolver.packageFragmentProvider + resolveSession.packageFragmentProvider, + container.get().packageFragmentProvider ) )) - } interface ReplLineAnalysisResult { diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt index b10b5702a11..e8404abb953 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/repl/di/injection.kt @@ -18,8 +18,7 @@ package org.jetbrains.kotlin.cli.jvm.repl.di import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl -import org.jetbrains.kotlin.container.StorageComponentContainer -import org.jetbrains.kotlin.container.getValue +import org.jetbrains.kotlin.container.ComponentProvider import org.jetbrains.kotlin.container.useImpl import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.context.ModuleContext @@ -32,11 +31,8 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.CompilerEnvironment -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel import org.jetbrains.kotlin.resolve.createContainer -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform -import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory fun createContainerForReplWithJava( @@ -45,7 +41,7 @@ fun createContainerForReplWithJava( declarationProviderFactory: DeclarationProviderFactory, moduleContentScope: GlobalSearchScope, packagePartProvider: PackagePartProvider -): ContainerForReplWithJava = createContainer("ReplWithJava", JvmPlatform) { +): ComponentProvider = createContainer("ReplWithJava", JvmPlatform) { useInstance(packagePartProvider) configureModule(moduleContext, JvmPlatform, bindingTrace) configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, LookupTracker.DO_NOTHING, LanguageVersionSettingsImpl.DEFAULT) @@ -55,15 +51,7 @@ fun createContainerForReplWithJava( CompilerEnvironment.configure(this) useImpl() -}.let { - it.javaAnalysisInit() - it.initJvmBuiltInsForTopDownAnalysis() - - ContainerForReplWithJava(it) -} - -class ContainerForReplWithJava(container: StorageComponentContainer) { - val resolveSession: ResolveSession by container - val lazyTopDownAnalyzerForTopLevel: LazyTopDownAnalyzerForTopLevel by container - val javaDescriptorResolver: JavaDescriptorResolver by container +}.apply { + javaAnalysisInit() + initJvmBuiltInsForTopDownAnalysis() } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt index 777048b65ff..73bc9d3ac7d 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt @@ -115,7 +115,7 @@ fun createContainerForTopDownAnalyzerForJvm( lookupTracker: LookupTracker, packagePartProvider: PackagePartProvider, languageVersionSettings: LanguageVersionSettings -): ContainerForTopDownAnalyzerForJvm = createContainer("TopDownAnalyzerForJvm", JvmPlatform) { +): ComponentProvider = createContainer("TopDownAnalyzerForJvm", JvmPlatform) { useInstance(packagePartProvider) configureModule(moduleContext, JvmPlatform, bindingTrace) @@ -126,11 +126,9 @@ fun createContainerForTopDownAnalyzerForJvm( CompilerEnvironment.configure(this) useImpl() -}.let { - it.javaAnalysisInit() - it.initJvmBuiltInsForTopDownAnalysis() - - ContainerForTopDownAnalyzerForJvm(it) +}.apply { + javaAnalysisInit() + initJvmBuiltInsForTopDownAnalysis() } fun StorageComponentContainer.javaAnalysisInit() { @@ -144,9 +142,3 @@ fun StorageComponentContainer.initJvmBuiltInsForTopDownAnalysis() { get().initialize(get(), get().supportsFeature(LanguageFeature.AdditionalBuiltInsMembers)) } - -class ContainerForTopDownAnalyzerForJvm(container: StorageComponentContainer) { - val lazyTopDownAnalyzerForTopLevel: LazyTopDownAnalyzerForTopLevel by container - val javaDescriptorResolver: JavaDescriptorResolver by container - val deserializationComponentsForJava: DeserializationComponentsForJava by container -} 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 e2a67d00b8d..87d37d66f4a 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 @@ -23,6 +23,7 @@ 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.container.get import org.jetbrains.kotlin.context.ContextForNewModule import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.MutableModuleContext @@ -31,6 +32,7 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.PackagePartProvider import org.jetbrains.kotlin.frontend.java.di.createContainerForTopDownAnalyzerForJvm import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentProvider import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider import org.jetbrains.kotlin.modules.TargetId @@ -38,6 +40,7 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.JvmBuiltIns import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingTrace +import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel import org.jetbrains.kotlin.resolve.TopDownAnalysisMode import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension @@ -77,19 +80,19 @@ object TopDownAnalyzerFacadeForJVM { if (incrementalComponents != null) { targetIds?.mapTo(additionalProviders) { targetId -> IncrementalPackageFragmentProvider( - files, module, storageManager, container.deserializationComponentsForJava.components, + files, module, storageManager, container.get().components, incrementalComponents.getIncrementalCache(targetId), targetId ) } } - additionalProviders.add(container.javaDescriptorResolver.packageFragmentProvider) + additionalProviders.add(container.get().packageFragmentProvider) PackageFragmentProviderExtension.getInstances(project).mapNotNullTo(additionalProviders) { extension -> extension.getPackageFragmentProvider(project, module, storageManager, trace, null) } - container.lazyTopDownAnalyzerForTopLevel.analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, additionalProviders) + container.get().analyzeFiles(TopDownAnalysisMode.TopLevelDeclarations, files, additionalProviders) for (extension in AnalysisCompletedHandlerExtension.getInstances(project)) { val result = extension.analysisCompleted(project, module, trace, files) diff --git a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt index 390352dd9c6..cb62498ac61 100644 --- a/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt +++ b/compiler/tests-java8/tests/org/jetbrains/kotlin/serialization/builtins/AdditionalBuiltInsMembersSignatureListsTest.kt @@ -20,6 +20,7 @@ import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl +import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.descriptors.PackagePartProvider import org.jetbrains.kotlin.descriptors.resolveClassByFqName @@ -31,6 +32,7 @@ import org.jetbrains.kotlin.load.kotlin.computeJvmDescriptor import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.JvmBuiltIns import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyPublicApi +import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory @@ -58,7 +60,7 @@ class AdditionalBuiltInsMembersSignatureListsTest : KotlinTestWithEnvironment() LanguageVersionSettingsImpl.DEFAULT ) - emptyModule.initialize(container.javaDescriptorResolver.packageFragmentProvider) + emptyModule.initialize(container.get().packageFragmentProvider) emptyModule.setDependencies(emptyModule) val blackList = diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/AbstractLocalClassProtoTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/AbstractLocalClassProtoTest.kt index 0a201e32aeb..33304efb643 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/AbstractLocalClassProtoTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/AbstractLocalClassProtoTest.kt @@ -22,12 +22,15 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl +import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.descriptors.PackagePartProvider import org.jetbrains.kotlin.frontend.java.di.createContainerForTopDownAnalyzerForJvm import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.java.structure.reflect.classId +import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava +import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory import org.jetbrains.kotlin.test.* @@ -63,9 +66,9 @@ abstract class AbstractLocalClassProtoTest : TestCaseWithTmpdir() { providerFactory, GlobalSearchScope.allScope(environment.project), LookupTracker.DO_NOTHING, PackagePartProvider.EMPTY, LanguageVersionSettingsImpl.DEFAULT ) - moduleContext.initializeModuleContents(container.javaDescriptorResolver.packageFragmentProvider) + moduleContext.initializeModuleContents(container.get().packageFragmentProvider) - val components = container.deserializationComponentsForJava.components + val components = container.get().components val classDescriptor = components.classDeserializer.deserializeClass(clazz.classId) ?: error("Class is not resolved: $clazz (classId = ${clazz.classId})") diff --git a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/AbstractBuiltInsWithJDKMembersTest.kt b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/AbstractBuiltInsWithJDKMembersTest.kt index 7f770004bdf..d4c4dcb318e 100644 --- a/compiler/tests/org/jetbrains/kotlin/serialization/builtins/AbstractBuiltInsWithJDKMembersTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/serialization/builtins/AbstractBuiltInsWithJDKMembersTest.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns.* import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl +import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.descriptors.PackagePartProvider import org.jetbrains.kotlin.frontend.java.di.createContainerForTopDownAnalyzerForJvm @@ -30,6 +31,7 @@ import org.jetbrains.kotlin.platform.JvmBuiltIns import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRendererModifier import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy +import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory import org.jetbrains.kotlin.storage.LockBasedStorageManager @@ -66,7 +68,7 @@ abstract class AbstractBuiltInsWithJDKMembersTest : KotlinTestWithEnvironment() LanguageVersionSettingsImpl.DEFAULT ) - emptyModule.initialize(container.javaDescriptorResolver.packageFragmentProvider) + emptyModule.initialize(container.get().packageFragmentProvider) emptyModule.setDependencies(emptyModule) val packageFragmentProvider = emptyModule.builtIns.builtInsModule.packageFragmentProvider