diff --git a/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt b/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt index 4b6e957e7ad..66bda40e3d7 100644 --- a/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt +++ b/build-common/src/org/jetbrains/kotlin/build/JvmBuildMetaInfo.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.config.KotlinCompilerVersion import org.jetbrains.kotlin.config.LanguageVersion +import org.jetbrains.kotlin.config.shouldWritePreReleaseFlag import org.jetbrains.kotlin.load.java.JvmBytecodeBinaryVersion import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion @@ -58,18 +59,23 @@ data class JvmBuildMetaInfo( } } -fun JvmBuildMetaInfo(args: CommonCompilerArguments): JvmBuildMetaInfo = - JvmBuildMetaInfo(isEAP = KotlinCompilerVersion.isPreRelease(), - compilerBuildVersion = KotlinCompilerVersion.VERSION, - languageVersionString = args.languageVersion ?: LanguageVersion.LATEST_STABLE.versionString, - apiVersionString = args.apiVersion ?: ApiVersion.LATEST_STABLE.versionString, - coroutinesEnable = args.coroutinesState == CommonCompilerArguments.ENABLE, - coroutinesWarn = args.coroutinesState == CommonCompilerArguments.WARN, - coroutinesError = args.coroutinesState == CommonCompilerArguments.ERROR, - multiplatformEnable = args.multiPlatform, - metadataVersionMajor = JvmMetadataVersion.INSTANCE.major, - metadataVersionMinor = JvmMetadataVersion.INSTANCE.minor, - metadataVersionPatch = JvmMetadataVersion.INSTANCE.patch, - bytecodeVersionMajor = JvmBytecodeBinaryVersion.INSTANCE.major, - bytecodeVersionMinor = JvmBytecodeBinaryVersion.INSTANCE.minor, - bytecodeVersionPatch = JvmBytecodeBinaryVersion.INSTANCE.patch) +fun JvmBuildMetaInfo(args: CommonCompilerArguments): JvmBuildMetaInfo { + val languageVersion = args.languageVersion?.let((LanguageVersion)::fromVersionString) ?: LanguageVersion.LATEST_STABLE + + return JvmBuildMetaInfo( + isEAP = languageVersion.shouldWritePreReleaseFlag(), + compilerBuildVersion = KotlinCompilerVersion.VERSION, + languageVersionString = languageVersion.versionString, + apiVersionString = args.apiVersion ?: ApiVersion.LATEST_STABLE.versionString, + coroutinesEnable = args.coroutinesState == CommonCompilerArguments.ENABLE, + coroutinesWarn = args.coroutinesState == CommonCompilerArguments.WARN, + coroutinesError = args.coroutinesState == CommonCompilerArguments.ERROR, + multiplatformEnable = args.multiPlatform, + metadataVersionMajor = JvmMetadataVersion.INSTANCE.major, + metadataVersionMinor = JvmMetadataVersion.INSTANCE.minor, + metadataVersionPatch = JvmMetadataVersion.INSTANCE.patch, + bytecodeVersionMajor = JvmBytecodeBinaryVersion.INSTANCE.major, + bytecodeVersionMinor = JvmBytecodeBinaryVersion.INSTANCE.minor, + bytecodeVersionPatch = JvmBytecodeBinaryVersion.INSTANCE.patch + ) +} diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index dc3aba97cf6..40dd55349bf 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -185,8 +185,11 @@ class LanguageVersionSettingsImpl @JvmOverloads constructor( } } -fun LanguageVersionSettings.shouldWritePreReleaseFlag(): Boolean { - if (!languageVersion.isStable) return true +fun LanguageVersionSettings.shouldWritePreReleaseFlag(): Boolean = + languageVersion.shouldWritePreReleaseFlag() - return KotlinCompilerVersion.isPreRelease() && languageVersion == LanguageVersion.LATEST_STABLE +fun LanguageVersion.shouldWritePreReleaseFlag(): Boolean { + if (!isStable) return true + + return KotlinCompilerVersion.isPreRelease() && this == LanguageVersion.LATEST_STABLE }