Simplify return types of createContainer* functions

This commit is contained in:
Alexander Udalov
2016-09-26 18:55:35 +03:00
parent 9cfe0be98e
commit 0250ea861c
7 changed files with 33 additions and 42 deletions
@@ -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<ResolveSession>()
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<LazyTopDownAnalyzerForTopLevel>()
moduleContext.initializeModuleContents(CompositePackageFragmentProvider(
listOf(
container.resolveSession.packageFragmentProvider,
container.javaDescriptorResolver.packageFragmentProvider
resolveSession.packageFragmentProvider,
container.get<JavaDescriptorResolver>().packageFragmentProvider
)
))
}
interface ReplLineAnalysisResult {
@@ -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<SingleModuleClassResolver>()
}.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()
}