diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java index fc3dc61403f..2d81981e8c2 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java @@ -233,8 +233,6 @@ public abstract class CLICompiler { configuration.put(CLIConfigurationKeys.COMPILER_JAR_LOCATOR, locator); } - configuration.put(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK, arguments.skipMetadataVersionCheck); - setupLanguageVersionSettings(configuration, arguments); } @@ -281,6 +279,7 @@ public abstract class CLICompiler { new LanguageVersionSettingsImpl( languageVersion, ApiVersion.createByLanguageVersion(apiVersion), + arguments.skipMetadataVersionCheck, extraLanguageFeatures, arguments.apiVersion != null ) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JvmRuntimeVersionsConsistencyChecker.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JvmRuntimeVersionsConsistencyChecker.kt index 03108478e82..9e569358457 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JvmRuntimeVersionsConsistencyChecker.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JvmRuntimeVersionsConsistencyChecker.kt @@ -130,6 +130,7 @@ object JvmRuntimeVersionsConsistencyChecker { val newSettings = LanguageVersionSettingsImpl( languageVersionSettings.languageVersion, inferredApiVersion, + languageVersionSettings.skipMetadataVersionCheck, languageVersionSettings.additionalFeatures, isApiVersionExplicit = false ) diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt index f10d1b44ee4..06cc26e2b20 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/KotlinRemoteReplService.kt @@ -22,8 +22,7 @@ import org.jetbrains.kotlin.cli.common.repl.* import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompiler import org.jetbrains.kotlin.cli.jvm.repl.GenericReplCompilerState -import org.jetbrains.kotlin.config.CommonConfigurationKeys -import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.daemon.common.CompileService import org.jetbrains.kotlin.daemon.common.RemoteOperationsTracer import org.jetbrains.kotlin.script.KotlinScriptDefinition @@ -53,7 +52,8 @@ open class KotlinJvmReplService( addJvmClasspathRoots(PathUtil.getKotlinPathsForCompiler().let { listOf(it.runtimePath, it.reflectPath, it.scriptRuntimePath) }) addJvmClasspathRoots(templateClasspath) put(CommonConfigurationKeys.MODULE_NAME, "kotlin-script") - put(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK, true) + put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, + LanguageVersionSettingsImpl(LanguageVersion.LATEST, ApiVersion.LATEST, skipMetadataVersionCheck = true)) } protected fun makeScriptDefinition(templateClasspath: List, templateClassName: String): KotlinScriptDefinition? { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt b/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt index fc86d8b9652..7c2d36a2fb7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/config/CommonConfigurationKeys.kt @@ -20,9 +20,6 @@ object CommonConfigurationKeys { @JvmField val LANGUAGE_VERSION_SETTINGS = CompilerConfigurationKey("language version settings") - @JvmField - val SKIP_METADATA_VERSION_CHECK = CompilerConfigurationKey("skip metadata version check") - @JvmField val DISABLE_INLINE = CompilerConfigurationKey("disable inline") diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt index ca257d93298..7b4776a5967 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/CompilerDeserializationConfiguration.kt @@ -16,7 +16,6 @@ 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.languageVersionSettings @@ -25,5 +24,5 @@ import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfigu class CompilerDeserializationConfiguration(configuration: CompilerConfiguration) : DeserializationConfiguration { override val typeAliasesAllowed = configuration.languageVersionSettings.supportsFeature(LanguageFeature.TypeAliases) - override val skipMetadataVersionCheck = configuration.getBoolean(CommonConfigurationKeys.SKIP_METADATA_VERSION_CHECK) + override val skipMetadataVersionCheck = configuration.languageVersionSettings.skipMetadataVersionCheck } diff --git a/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt b/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt index 74aaca12dad..be03dc09981 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt +++ b/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt @@ -108,6 +108,8 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava get() = error("Must not be called") diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 47a2c635b97..1e9d0f22160 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -100,6 +100,8 @@ interface LanguageVersionSettings { // Please do not use this to enable/disable specific features/checks. Instead add a new LanguageFeature entry and call supportsFeature val languageVersion: LanguageVersion + val skipMetadataVersionCheck: Boolean + val additionalFeatures: Collection @Deprecated("This is a temporary solution, please do not use.") @@ -109,6 +111,7 @@ interface LanguageVersionSettings { class LanguageVersionSettingsImpl @JvmOverloads constructor( override val languageVersion: LanguageVersion, override val apiVersion: ApiVersion, + override val skipMetadataVersionCheck: Boolean = false, additionalFeatures: Collection = emptySet(), override val isApiVersionExplicit: Boolean = false ) : LanguageVersionSettings { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt index bed06913c16..a52688c5789 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt @@ -93,6 +93,7 @@ fun Project.getLanguageVersionSettings(contextModule: Module? = null): LanguageV return LanguageVersionSettingsImpl( languageVersion, apiVersion, + arguments.skipMetadataVersionCheck, extraLanguageFeatures ) } @@ -111,7 +112,12 @@ val Module.languageVersionSettings: LanguageVersionSettings this ) - return LanguageVersionSettingsImpl(languageVersion, ApiVersion.createByLanguageVersion(apiVersion), extraLanguageFeatures) + return LanguageVersionSettingsImpl( + languageVersion, + ApiVersion.createByLanguageVersion(apiVersion), + facetSettings.skipMetadataVersionCheck, + extraLanguageFeatures + ) } val Module.targetPlatform: TargetPlatformKind<*>? diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt index 392af29446b..19f449cb599 100644 --- a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt +++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt @@ -123,6 +123,12 @@ class KotlinFacetSettings { coroutinesError = value == CoroutineSupport.DISABLED } } + + var skipMetadataVersionCheck: Boolean + get() = compilerArguments?.skipMetadataVersionCheck == true + set(value) { + compilerArguments!!.skipMetadataVersionCheck = value + } } fun TargetPlatformKind<*>.createCompilerArguments(): CommonCompilerArguments {