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)
|
checkLanguageVersionIsStable(languageVersion, collector)
|
||||||
checkOutdatedVersions(languageVersion, apiVersion, collector)
|
checkOutdatedVersions(languageVersion, apiVersion, collector)
|
||||||
checkProgressiveMode(languageVersion, collector)
|
checkProgressiveMode(languageVersion, collector)
|
||||||
|
|
||||||
|
checkIrSupport(languageVersionSettings, collector)
|
||||||
}
|
}
|
||||||
|
|
||||||
checkPlatformSpecificSettings(languageVersionSettings, collector)
|
checkPlatformSpecificSettings(languageVersionSettings, collector)
|
||||||
@@ -652,6 +654,10 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
protected open fun checkPlatformSpecificSettings(languageVersionSettings: LanguageVersionSettings, collector: MessageCollector) {
|
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) {
|
private enum class VersionKind(val text: String) {
|
||||||
LANGUAGE("Language"), API("API")
|
LANGUAGE("Language"), API("API")
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-3
@@ -6,11 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.cli.common.arguments
|
package org.jetbrains.kotlin.cli.common.arguments
|
||||||
|
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants.*
|
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.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.AnalysisFlags.allowFullyQualifiedNameInKClass
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersion
|
|
||||||
|
|
||||||
class K2JSCompilerArguments : CommonCompilerArguments() {
|
class K2JSCompilerArguments : CommonCompilerArguments() {
|
||||||
companion object {
|
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> {
|
override fun configureLanguageFeatures(collector: MessageCollector): MutableMap<LanguageFeature, LanguageFeature.State> {
|
||||||
return super.configureLanguageFeatures(collector).apply {
|
return super.configureLanguageFeatures(collector).apply {
|
||||||
if (extensionFunctionsInExternals) {
|
if (extensionFunctionsInExternals) {
|
||||||
|
|||||||
+11
@@ -371,6 +371,17 @@ class K2NativeCompilerArguments : CommonCompilerArguments() {
|
|||||||
if (printIr)
|
if (printIr)
|
||||||
phasesToDumpAfter = arrayOf("ALL")
|
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"
|
const val EMBED_BITCODE_FLAG = "-Xembed-bitcode"
|
||||||
|
|||||||
Reference in New Issue
Block a user