Add extension CompilerConfiguration.languageVersionSettings for convenience

This commit is contained in:
Alexander Udalov
2017-02-10 20:35:09 +03:00
parent 103bd6dbde
commit 21449763ab
21 changed files with 83 additions and 108 deletions
@@ -50,9 +50,9 @@ import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragmen
*/
object DefaultAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
private val compilerConfiguration = CompilerConfiguration().apply {
put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl(
languageVersionSettings = LanguageVersionSettingsImpl(
LanguageVersion.LATEST, ApiVersion.LATEST, setOf(LanguageFeature.MultiPlatformProjects)
))
)
}
private class SourceModuleInfo(
@@ -29,3 +29,7 @@ object CommonConfigurationKeys {
@JvmField
val MODULE_NAME = CompilerConfigurationKey<String>("module name")
}
var CompilerConfiguration.languageVersionSettings: LanguageVersionSettings
get() = get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
set(value) = put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, value)
@@ -16,9 +16,8 @@
package org.jetbrains.kotlin.frontend.di
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.container.useImpl
@@ -69,7 +68,7 @@ fun StorageComponentContainer.configureModule(
fun StorageComponentContainer.configureCommon(configuration: CompilerConfiguration) {
useInstance(configuration)
useInstance(configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT))
useInstance(configuration.languageVersionSettings)
}
fun createContainerForBodyResolve(
@@ -19,14 +19,11 @@ package org.jetbrains.kotlin.resolve
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
class CompilerDeserializationConfiguration(configuration: CompilerConfiguration) : DeserializationConfiguration {
private val languageVersionSettings =
configuration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
override val typeAliasesAllowed = languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases)
override val typeAliasesAllowed = configuration.languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases)
override val skipMetadataVersionCheck = configuration.getBoolean(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK)
}
@@ -18,10 +18,9 @@ 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.config.languageVersionSettings
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.GlobalContext
import org.jetbrains.kotlin.context.withModule
@@ -94,7 +93,7 @@ class LocalClassifierAnalyzer(
typeResolver,
annotationResolver,
supertypeLoopChecker,
compilerConfiguration.get(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT),
compilerConfiguration.languageVersionSettings,
SyntheticResolveExtension.getInstance(project),
delegationFilter
)