[Injection] Make component containers composition more granular and flexible
Previously, containers set-up was performed by calls to static functions like 'createContainerForLazyResolve', which would set-up whole container from scratch. This has several issues: - complicates code re-use and encourages copy-paste of one and the same set-up logic - complicates composition of multiplatform containers (because each set-up method relies on the fact that it should take an empty container and compose it completely) The idea of this commit is to split set-up methods into smaller ones, with finer areas of responsibility, which allows to re-use them in various scenarios (and, in particularly motivating composition of multiplatform container)
This commit is contained in:
@@ -24,7 +24,9 @@ import org.jetbrains.kotlin.context.ModuleContext
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.frontend.di.configureIncrementalCompilation
|
||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
|
||||
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices
|
||||
@@ -53,16 +55,13 @@ fun createTopDownAnalyzerForJs(
|
||||
languageVersionSettings
|
||||
)
|
||||
|
||||
useInstance(declarationProviderFactory)
|
||||
useImpl<AnnotationResolverImpl>()
|
||||
|
||||
CompilerEnvironment.configure(this)
|
||||
useInstance(lookupTracker)
|
||||
useInstance(expectActualTracker)
|
||||
|
||||
useImpl<ResolveSession>()
|
||||
useImpl<LazyTopDownAnalyzer>()
|
||||
configureIncrementalCompilation(lookupTracker, expectActualTracker)
|
||||
configureStandardResolveComponents()
|
||||
useImpl<SubstitutingScopeProviderImpl>()
|
||||
|
||||
useInstance(declarationProviderFactory)
|
||||
CompilerEnvironment.configure(this)
|
||||
|
||||
}.apply {
|
||||
val packagePartProviders = mutableListOf(get<KotlinCodeAnalyzer>().packageFragmentProvider)
|
||||
val moduleDescriptor = get<ModuleDescriptorImpl>()
|
||||
|
||||
Reference in New Issue
Block a user