Inject CompilerConfiguration instead of LanguageVersionSettings
LanguageVersionSettings can be read from the configuration. Also, the configuration may be used for other stuff, not related to language version settings, soon
This commit is contained in:
@@ -19,12 +19,15 @@ package org.jetbrains.kotlin.frontend.java.di
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.builtins.JvmBuiltInsPackageFragmentProvider
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.container.*
|
||||
import org.jetbrains.kotlin.context.LazyResolveToken
|
||||
import org.jetbrains.kotlin.context.ModuleContext
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackagePartProvider
|
||||
import org.jetbrains.kotlin.frontend.di.configureCommon
|
||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.load.java.InternalFlexibleTypeTransformer
|
||||
@@ -91,12 +94,11 @@ fun createContainerForLazyResolveWithJava(
|
||||
configureModule(moduleContext, JvmPlatform, bindingTrace)
|
||||
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker)
|
||||
|
||||
useInstance(compilerConfiguration)
|
||||
useInstance(packagePartProvider)
|
||||
useInstance(moduleClassResolver)
|
||||
useInstance(declarationProviderFactory)
|
||||
|
||||
useInstance(compilerConfiguration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT))
|
||||
configureCommon(compilerConfiguration)
|
||||
|
||||
if (useBuiltInsProvider) {
|
||||
useInstance((moduleContext.module.builtIns as JvmBuiltIns).settings)
|
||||
|
||||
@@ -19,10 +19,7 @@ package org.jetbrains.kotlin.analyzer.common
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.analyzer.*
|
||||
import org.jetbrains.kotlin.config.ApiVersion
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.container.useImpl
|
||||
@@ -34,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackagePartProvider
|
||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.frontend.di.configureCommon
|
||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory
|
||||
@@ -51,9 +49,11 @@ import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragmen
|
||||
* See [TargetPlatform.Default]
|
||||
*/
|
||||
object DefaultAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
|
||||
private val languageVersionSettings = LanguageVersionSettingsImpl(
|
||||
LanguageVersion.LATEST, ApiVersion.LATEST, setOf(LanguageFeature.MultiPlatformProjects)
|
||||
)
|
||||
private val compilerConfiguration = CompilerConfiguration().apply {
|
||||
put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl(
|
||||
LanguageVersion.LATEST, ApiVersion.LATEST, setOf(LanguageFeature.MultiPlatformProjects)
|
||||
))
|
||||
}
|
||||
|
||||
private class SourceModuleInfo(
|
||||
override val name: Name,
|
||||
@@ -135,7 +135,7 @@ object DefaultAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
|
||||
useImpl<ResolveSession>()
|
||||
useImpl<LazyTopDownAnalyzer>()
|
||||
useImpl<FileScopeProviderImpl>()
|
||||
useInstance(languageVersionSettings)
|
||||
configureCommon(compilerConfiguration)
|
||||
useImpl<CompilerDeserializationConfiguration>()
|
||||
useInstance(packagePartProvider)
|
||||
useInstance(declarationProviderFactory)
|
||||
|
||||
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.frontend.di
|
||||
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||
import org.jetbrains.kotlin.container.get
|
||||
@@ -68,12 +67,17 @@ fun StorageComponentContainer.configureModule(
|
||||
useInstance(trace)
|
||||
}
|
||||
|
||||
fun StorageComponentContainer.configureCommon(configuration: CompilerConfiguration) {
|
||||
useInstance(configuration)
|
||||
useInstance(configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT))
|
||||
}
|
||||
|
||||
fun createContainerForBodyResolve(
|
||||
moduleContext: ModuleContext,
|
||||
bindingTrace: BindingTrace,
|
||||
platform: TargetPlatform,
|
||||
statementFilter: StatementFilter,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
compilerConfiguration: CompilerConfiguration
|
||||
): StorageComponentContainer = createContainer("BodyResolve", platform) {
|
||||
configureModule(moduleContext, platform, bindingTrace)
|
||||
|
||||
@@ -81,7 +85,7 @@ fun createContainerForBodyResolve(
|
||||
|
||||
useInstance(LookupTracker.DO_NOTHING)
|
||||
useInstance(BodyResolveCache.ThrowException)
|
||||
useInstance(languageVersionSettings)
|
||||
configureCommon(compilerConfiguration)
|
||||
|
||||
useImpl<BodyResolver>()
|
||||
}
|
||||
@@ -92,7 +96,7 @@ fun createContainerForLazyBodyResolve(
|
||||
bindingTrace: BindingTrace,
|
||||
platform: TargetPlatform,
|
||||
bodyResolveCache: BodyResolveCache,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
compilerConfiguration: CompilerConfiguration
|
||||
): StorageComponentContainer = createContainer("LazyBodyResolve", platform) {
|
||||
configureModule(moduleContext, platform, bindingTrace)
|
||||
|
||||
@@ -100,7 +104,7 @@ fun createContainerForLazyBodyResolve(
|
||||
useInstance(kotlinCodeAnalyzer)
|
||||
useInstance(kotlinCodeAnalyzer.fileScopeProvider)
|
||||
useInstance(bodyResolveCache)
|
||||
useInstance(languageVersionSettings)
|
||||
configureCommon(compilerConfiguration)
|
||||
useImpl<LazyTopDownAnalyzer>()
|
||||
useImpl<BasicAbsentDescriptorHandler>()
|
||||
}
|
||||
@@ -110,7 +114,7 @@ fun createContainerForLazyLocalClassifierAnalyzer(
|
||||
bindingTrace: BindingTrace,
|
||||
platform: TargetPlatform,
|
||||
lookupTracker: LookupTracker,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
compilerConfiguration: CompilerConfiguration,
|
||||
statementFilter: StatementFilter,
|
||||
localClassDescriptorHolder: LocalClassDescriptorHolder
|
||||
): StorageComponentContainer = createContainer("LocalClassifierAnalyzer", platform) {
|
||||
@@ -130,7 +134,7 @@ fun createContainerForLazyLocalClassifierAnalyzer(
|
||||
useImpl<DeclarationScopeProviderForLocalClassifierAnalyzer>()
|
||||
useImpl<LocalLazyDeclarationResolver>()
|
||||
|
||||
useInstance(languageVersionSettings)
|
||||
configureCommon(compilerConfiguration)
|
||||
useInstance(statementFilter)
|
||||
}
|
||||
|
||||
@@ -146,9 +150,8 @@ fun createContainerForLazyResolve(
|
||||
|
||||
useInstance(declarationProviderFactory)
|
||||
useInstance(LookupTracker.DO_NOTHING)
|
||||
useInstance(compilerConfiguration)
|
||||
|
||||
useInstance(compilerConfiguration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT))
|
||||
configureCommon(compilerConfiguration)
|
||||
|
||||
useImpl<FileScopeProviderImpl>()
|
||||
useImpl<CompilerDeserializationConfiguration>()
|
||||
|
||||
+6
-3
@@ -18,7 +18,10 @@ package org.jetbrains.kotlin.types.expressions
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.context.GlobalContext
|
||||
import org.jetbrains.kotlin.context.withModule
|
||||
@@ -60,7 +63,7 @@ class LocalClassifierAnalyzer(
|
||||
private val platform: TargetPlatform,
|
||||
private val lookupTracker: LookupTracker,
|
||||
private val supertypeLoopChecker: SupertypeLoopChecker,
|
||||
private val languageVersionSettings: LanguageVersionSettings,
|
||||
private val compilerConfiguration: CompilerConfiguration,
|
||||
private val delegationFilter: DelegationFilter
|
||||
) {
|
||||
fun processClassOrObject(
|
||||
@@ -77,7 +80,7 @@ class LocalClassifierAnalyzer(
|
||||
context.trace,
|
||||
platform,
|
||||
lookupTracker,
|
||||
languageVersionSettings,
|
||||
compilerConfiguration,
|
||||
context.statementFilter,
|
||||
LocalClassDescriptorHolder(
|
||||
scope,
|
||||
@@ -91,7 +94,7 @@ class LocalClassifierAnalyzer(
|
||||
typeResolver,
|
||||
annotationResolver,
|
||||
supertypeLoopChecker,
|
||||
languageVersionSettings,
|
||||
compilerConfiguration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT),
|
||||
SyntheticResolveExtension.getInstance(project),
|
||||
delegationFilter
|
||||
)
|
||||
|
||||
@@ -17,13 +17,14 @@
|
||||
package org.jetbrains.kotlin.tests.di
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||
import org.jetbrains.kotlin.container.getValue
|
||||
import org.jetbrains.kotlin.container.useImpl
|
||||
import org.jetbrains.kotlin.container.useInstance
|
||||
import org.jetbrains.kotlin.context.ModuleContext
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.frontend.di.configureCommon
|
||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.resolve.DescriptorResolver
|
||||
@@ -38,7 +39,7 @@ fun createContainerForTests(project: Project, module: ModuleDescriptor): Contain
|
||||
return ContainerForTests(createContainer("Tests", JvmPlatform) {
|
||||
configureModule(ModuleContext(module, project), JvmPlatform)
|
||||
useInstance(LookupTracker.DO_NOTHING)
|
||||
useInstance(LanguageVersionSettingsImpl.DEFAULT)
|
||||
configureCommon(CompilerConfiguration.EMPTY)
|
||||
useImpl<ExpressionTypingServices>()
|
||||
})
|
||||
}
|
||||
|
||||
+2
-2
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||
import org.jetbrains.kotlin.frontend.di.createContainerForLazyBodyResolve
|
||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.createCompilerConfiguration
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
@@ -173,7 +173,7 @@ private object KotlinResolveDataProvider {
|
||||
trace,
|
||||
targetPlatform,
|
||||
componentProvider.get<BodyResolveCache>(),
|
||||
analyzableElement.languageVersionSettings
|
||||
analyzableElement.createCompilerConfiguration()
|
||||
).get<LazyTopDownAnalyzer>()
|
||||
|
||||
lazyTopDownAnalyzer.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, listOf(analyzableElement))
|
||||
|
||||
@@ -143,6 +143,11 @@ private fun getExtraLanguageFeatures(
|
||||
}
|
||||
}
|
||||
|
||||
fun KtElement.createCompilerConfiguration(): CompilerConfiguration = CompilerConfiguration().apply {
|
||||
put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, languageVersionSettings)
|
||||
isReadOnly = true
|
||||
}
|
||||
|
||||
val KtElement.languageVersionSettings: LanguageVersionSettings
|
||||
get() {
|
||||
if (ServiceManager.getService(containingKtFile.project, ProjectFileIndex::class.java) == null) {
|
||||
|
||||
@@ -588,7 +588,7 @@ class ResolveElementCache(
|
||||
trace,
|
||||
targetPlatform,
|
||||
statementFilter,
|
||||
file.languageVersionSettings
|
||||
file.createCompilerConfiguration()
|
||||
).get<BodyResolver>()
|
||||
}
|
||||
|
||||
|
||||
@@ -16,12 +16,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.frontend.js.di
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.container.useImpl
|
||||
import org.jetbrains.kotlin.container.useInstance
|
||||
import org.jetbrains.kotlin.context.ModuleContext
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.frontend.di.configureCommon
|
||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.js.resolve.JsPlatform
|
||||
@@ -38,7 +39,7 @@ fun createTopDownAnalyzerForJs(
|
||||
moduleContext: ModuleContext,
|
||||
bindingTrace: BindingTrace,
|
||||
declarationProviderFactory: DeclarationProviderFactory,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
compilerConfiguration: CompilerConfiguration
|
||||
): LazyTopDownAnalyzer {
|
||||
val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatform) {
|
||||
configureModule(moduleContext, JsPlatform, bindingTrace)
|
||||
@@ -49,7 +50,7 @@ fun createTopDownAnalyzerForJs(
|
||||
CompilerEnvironment.configure(this)
|
||||
|
||||
useInstance(LookupTracker.DO_NOTHING)
|
||||
useInstance(languageVersionSettings)
|
||||
configureCommon(compilerConfiguration)
|
||||
useImpl<ResolveSession>()
|
||||
useImpl<LazyTopDownAnalyzer>()
|
||||
}.apply {
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.js.analyze
|
||||
|
||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.context.ContextForNewModule
|
||||
import org.jetbrains.kotlin.context.ModuleContext
|
||||
import org.jetbrains.kotlin.context.ProjectContext
|
||||
@@ -57,7 +55,7 @@ object TopDownAnalyzerFacadeForJS {
|
||||
val analyzerForJs = createTopDownAnalyzerForJs(
|
||||
moduleContext, trace,
|
||||
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
|
||||
config.configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
|
||||
config.configuration
|
||||
)
|
||||
analyzerForJs.analyzeDeclarations(TopDownAnalysisMode.TopLevelDeclarations, files)
|
||||
return JsAnalysisResult.success(trace, moduleContext.module)
|
||||
|
||||
Reference in New Issue
Block a user