Revert "Remove obsolete check for language version and IR backends"
This check is no longer obsolete since language version 1.3 support is
restored for Kotlin/JVM, but JS and Native never supported LV 1.3.
This is a partial revert of 0213c25c9b,
without the diagnostic in K2JVMCompilerArguments (which is not needed
since the earliest supported LV is 1.3).
#KT-50695 Fixed
This commit is contained in:
+6
@@ -574,6 +574,8 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
checkLanguageVersionIsStable(languageVersion, collector)
|
||||
checkOutdatedVersions(languageVersion, apiVersion, collector)
|
||||
checkProgressiveMode(languageVersion, collector)
|
||||
|
||||
checkIrSupport(languageVersionSettings, collector)
|
||||
}
|
||||
|
||||
checkPlatformSpecificSettings(languageVersionSettings, collector)
|
||||
@@ -652,6 +654,10 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
protected open fun checkPlatformSpecificSettings(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) {
|
||||
}
|
||||
|
||||
protected open fun checkIrSupport(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) {
|
||||
// backend-specific
|
||||
}
|
||||
|
||||
private enum class VersionKind(val text: String) {
|
||||
LANGUAGE("Language"), API("API")
|
||||
}
|
||||
|
||||
+15
-3
@@ -6,11 +6,10 @@
|
||||
package org.jetbrains.kotlin.cli.common.arguments
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants.*
|
||||
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
|
||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||
import org.jetbrains.kotlin.config.AnalysisFlag
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.config.AnalysisFlags.allowFullyQualifiedNameInKClass
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
|
||||
class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
companion object {
|
||||
@@ -257,6 +256,19 @@ class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun checkIrSupport(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) {
|
||||
if (!isIrBackendEnabled()) return
|
||||
|
||||
if (languageVersionSettings.languageVersion < LanguageVersion.KOTLIN_1_4
|
||||
|| languageVersionSettings.apiVersion < ApiVersion.KOTLIN_1_4
|
||||
) {
|
||||
collector.report(
|
||||
CompilerMessageSeverity.ERROR,
|
||||
"IR backend cannot be used with language or API version below 1.4"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun configureLanguageFeatures(collector: MessageCollector): MutableMap<LanguageFeature, LanguageFeature.State> {
|
||||
return super.configureLanguageFeatures(collector).apply {
|
||||
if (extensionFunctionsInExternals) {
|
||||
|
||||
+11
@@ -371,6 +371,17 @@ class K2NativeCompilerArguments : CommonCompilerArguments() {
|
||||
if (printIr)
|
||||
phasesToDumpAfter = arrayOf("ALL")
|
||||
}
|
||||
|
||||
override fun checkIrSupport(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) {
|
||||
if (languageVersionSettings.languageVersion < LanguageVersion.KOTLIN_1_4
|
||||
|| languageVersionSettings.apiVersion < ApiVersion.KOTLIN_1_4
|
||||
) {
|
||||
collector.report(
|
||||
severity = CompilerMessageSeverity.ERROR,
|
||||
message = "Native backend cannot be used with language or API version below 1.4"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const val EMBED_BITCODE_FLAG = "-Xembed-bitcode"
|
||||
|
||||
Reference in New Issue
Block a user