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 ae1dd2c445c..9f910379fbd 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLICompiler.java @@ -247,11 +247,15 @@ public abstract class CLICompiler { // If only "-api-version" is specified, language version is assumed to be the latest languageVersion = LanguageVersion.LATEST; } + if (apiVersion == null) { // If only "-language-version" is specified, API version is assumed to be equal to the language version // (API version cannot be greater than the language version) apiVersion = languageVersion; } + else { + configuration.put(CLIConfigurationKeys.IS_API_VERSION_EXPLICIT, true); + } if (apiVersion.compareTo(languageVersion) > 0) { configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY).report( @@ -281,8 +285,7 @@ public abstract class CLICompiler { languageVersion, ApiVersion.createByLanguageVersion(apiVersion), arguments.skipMetadataVersionCheck, - extraLanguageFeatures, - arguments.apiVersion != null + extraLanguageFeatures ) ); } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLIConfigurationKeys.java b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLIConfigurationKeys.java index 69aef735300..60a80e4dc6d 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLIConfigurationKeys.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/CLIConfigurationKeys.java @@ -29,6 +29,8 @@ public class CLIConfigurationKeys { CompilerConfigurationKey.create("allow kotlin package"); public static final CompilerConfigurationKey REPORT_PERF = CompilerConfigurationKey.create("report performance information"); + public static final CompilerConfigurationKey IS_API_VERSION_EXPLICIT = + CompilerConfigurationKey.create("is API version explicit"); // Used in Eclipse plugin (see KotlinCLICompiler) public static final CompilerConfigurationKey COMPILER_JAR_LOCATOR = 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 99d92c90877..d8f3e256f45 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JvmRuntimeVersionsConsistencyChecker.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/JvmRuntimeVersionsConsistencyChecker.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.cli.jvm import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile +import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollector @@ -120,7 +121,7 @@ object JvmRuntimeVersionsConsistencyChecker { val actualApi = ApiVersion.parse(actualRuntimeVersion.toString()) if (actualApi != null) { val inferredApiVersion = - if (@Suppress("DEPRECATION") languageVersionSettings.isApiVersionExplicit) + if (configuration.getBoolean(CLIConfigurationKeys.IS_API_VERSION_EXPLICIT)) languageVersionSettings.apiVersion else // "minOf" is needed in case when API version was inferred from language version and it's older than actualApi. diff --git a/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt b/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt index 437f2aba752..d28f526b61a 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt +++ b/compiler/tests-common/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt @@ -109,9 +109,6 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava = emptyMap(), - override val isApiVersionExplicit: Boolean = false + private val specificFeatures: Map = emptyMap() ) : LanguageVersionSettings { override fun getFeatureSupport(feature: LanguageFeature): LanguageFeature.State { specificFeatures[feature]?.let { return it }