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 {
|
||||
|
||||
// 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
|
||||
// (API version cannot be greater than the language version)
|
||||
@@ -554,6 +554,8 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
checkProgressiveMode(languageVersion, collector)
|
||||
}
|
||||
|
||||
checkPlatformSpecificSettings(languageVersionSettings, collector)
|
||||
|
||||
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) {
|
||||
LANGUAGE("Language"), API("API")
|
||||
}
|
||||
|
||||
+22
@@ -534,4 +534,26 @@ default: `indy-with-constants` for JVM target 9 or greater, `inline` otherwise""
|
||||
}
|
||||
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"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user