Prohibit using old JVM backend with LV >= 1.6
#KT-48928 Fixed
This commit is contained in:
+10
-2
@@ -531,9 +531,9 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun toLanguageVersionSettings(collector: MessageCollector): LanguageVersionSettings {
|
fun toLanguageVersionSettings(collector: MessageCollector): LanguageVersionSettings {
|
||||||
|
|
||||||
// If only "-api-version" is specified, language version is assumed to be the latest stable
|
// If only "-api-version" is specified, language version is assumed to be the latest stable
|
||||||
val languageVersion = parseVersion(collector, languageVersion, "language") ?: LanguageVersion.LATEST_STABLE
|
val languageVersion = parseVersion(collector, languageVersion, "language")
|
||||||
|
?: defaultLanguageVersion(collector)
|
||||||
|
|
||||||
// If only "-language-version" is specified, API version is assumed to be equal to the language version
|
// 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)
|
// (API version cannot be greater than the language version)
|
||||||
@@ -554,6 +554,8 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
checkProgressiveMode(languageVersion, collector)
|
checkProgressiveMode(languageVersion, collector)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkPlatformSpecificSettings(languageVersionSettings, collector)
|
||||||
|
|
||||||
return languageVersionSettings
|
return languageVersionSettings
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -622,6 +624,12 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected open fun defaultLanguageVersion(collector: MessageCollector): LanguageVersion =
|
||||||
|
LanguageVersion.LATEST_STABLE
|
||||||
|
|
||||||
|
protected open fun checkPlatformSpecificSettings(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) {
|
||||||
|
}
|
||||||
|
|
||||||
private enum class VersionKind(val text: String) {
|
private enum class VersionKind(val text: String) {
|
||||||
LANGUAGE("Language"), API("API")
|
LANGUAGE("Language"), API("API")
|
||||||
}
|
}
|
||||||
|
|||||||
+22
@@ -534,4 +534,26 @@ default: `indy-with-constants` for JVM target 9 or greater, `inline` otherwise""
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun defaultLanguageVersion(collector: MessageCollector): LanguageVersion =
|
||||||
|
if (useOldBackend) {
|
||||||
|
if (!suppressVersionWarnings) {
|
||||||
|
collector.report(
|
||||||
|
CompilerMessageSeverity.STRONG_WARNING,
|
||||||
|
"Language version is automatically inferred to ${LanguageVersion.KOTLIN_1_5.versionString} when using " +
|
||||||
|
"the old JVM backend. Consider specifying -language-version explicitly, or remove -Xuse-old-backend"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
LanguageVersion.KOTLIN_1_5
|
||||||
|
} else super.defaultLanguageVersion(collector)
|
||||||
|
|
||||||
|
override fun checkPlatformSpecificSettings(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) {
|
||||||
|
if (useOldBackend && languageVersionSettings.languageVersion >= LanguageVersion.KOTLIN_1_6) {
|
||||||
|
collector.report(
|
||||||
|
CompilerMessageSeverity.ERROR,
|
||||||
|
"Old JVM backend does not support language version 1.6 or above. " +
|
||||||
|
"Please use language version 1.5 or below, or remove -Xuse-old-backend"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
warning: language version is automatically inferred to 1.5 when using the old JVM backend. Consider specifying -language-version explicitly, or remove -Xuse-old-backend
|
||||||
warning: -Xuse-old-backend is deprecated and will be removed in a future release
|
warning: -Xuse-old-backend is deprecated and will be removed in a future release
|
||||||
error: -Xabi-stability=unstable is not supported in the old JVM backend
|
error: -Xabi-stability=unstable is not supported in the old JVM backend
|
||||||
COMPILATION_ERROR
|
COMPILATION_ERROR
|
||||||
|
|||||||
@@ -3,3 +3,5 @@ $TESTDATA_DIR$/simple.kt
|
|||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
-Xuse-ir
|
-Xuse-ir
|
||||||
-Xuse-old-backend
|
-Xuse-old-backend
|
||||||
|
-language-version
|
||||||
|
1.5
|
||||||
|
|||||||
@@ -2,3 +2,5 @@ $TESTDATA_DIR$/classAndTraitClash.kt
|
|||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
-Xuse-old-backend
|
-Xuse-old-backend
|
||||||
|
-language-version
|
||||||
|
1.5
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
$TESTDATA_DIR$/simple.kt
|
||||||
|
-d
|
||||||
|
$TEMP_DIR$
|
||||||
|
-Xuse-old-backend
|
||||||
|
-language-version
|
||||||
|
1.6
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
error: old JVM backend does not support language version 1.6 or above. Please use language version 1.5 or below, or remove -Xuse-old-backend
|
||||||
|
COMPILATION_ERROR
|
||||||
@@ -2,3 +2,5 @@ $TESTDATA_DIR$/suspendInFunInterfaceIrDisabled.kt
|
|||||||
-d
|
-d
|
||||||
$TEMP_DIR$
|
$TEMP_DIR$
|
||||||
-Xuse-old-backend
|
-Xuse-old-backend
|
||||||
|
-language-version
|
||||||
|
1.5
|
||||||
|
|||||||
@@ -736,6 +736,11 @@ public class CliTestGenerated extends AbstractCliTest {
|
|||||||
runTest("compiler/testData/cli/jvm/nullabilityAnnotations.args");
|
runTest("compiler/testData/cli/jvm/nullabilityAnnotations.args");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("oldBackendLv16.args")
|
||||||
|
public void testOldBackendLv16() throws Exception {
|
||||||
|
runTest("compiler/testData/cli/jvm/oldBackendLv16.args");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("pluginSimple.args")
|
@TestMetadata("pluginSimple.args")
|
||||||
public void testPluginSimple() throws Exception {
|
public void testPluginSimple() throws Exception {
|
||||||
runTest("compiler/testData/cli/jvm/pluginSimple.args");
|
runTest("compiler/testData/cli/jvm/pluginSimple.args");
|
||||||
|
|||||||
+3
-1
@@ -1 +1,3 @@
|
|||||||
// LANGUAGE_VERSION: 1.6
|
// LANGUAGE_VERSION: 1.6
|
||||||
|
// IGNORE_BACKEND_LEGACY: JVM
|
||||||
|
// IGNORE_BACKEND: JVM
|
||||||
|
|||||||
Reference in New Issue
Block a user