Restore KotlinCompilerVersion.IS_PRE_RELEASE

This commit is a slightly modified revert of 4f29c113.
IS_PRE_RELEASE allows to make LATEST_STABLE version behave as
experimental when this flag is set to true.
The general goal is to prepare fix of KT-62058; after this commit
one can do it by changing IS_PRE_RELEASE flag to true.
The fix of KT-62058 is planned to be done during bootstrapping.
This preparation and the future fix are parts of umbrella KT-61951.
This commit is contained in:
Mikhail Glukhikh
2023-09-20 15:45:08 +02:00
committed by Space Team
parent 850201a65c
commit 156097fe17
13 changed files with 152 additions and 12 deletions
@@ -596,7 +596,7 @@ class LanguageVersionSettingsImpl @JvmOverloads constructor(
}
}
override fun isPreRelease(): Boolean = !languageVersion.isStable ||
override fun isPreRelease(): Boolean = languageVersion.isPreRelease() ||
specificFeatures.any { (feature, state) ->
state == LanguageFeature.State.ENABLED && feature.forcesPreReleaseBinariesIfEnabled()
}
@@ -607,6 +607,12 @@ class LanguageVersionSettingsImpl @JvmOverloads constructor(
}
}
fun LanguageVersion.isPreRelease(): Boolean {
if (!isStable) return true
return KotlinCompilerVersion.isPreRelease() && this == LanguageVersion.LATEST_STABLE
}
fun LanguageFeature.forcesPreReleaseBinariesIfEnabled(): Boolean {
val isFeatureNotReleasedYet = sinceVersion?.isStable != true
return isFeatureNotReleasedYet && kind.forcesPreReleaseBinaries