IDEA-386224 jdk: fix JDK_X case for LanguageLevel#getNonPreviewLevel

IJ-CR-194679


(cherry picked from commit e7fed949dab6c28a2ddb31beb92a6158e3962569)

IJ-CR-194679

GitOrigin-RevId: 1c7bd1cee637a5bfc92d002ccb3de6b4670b8954
This commit is contained in:
Louis Vignier
2026-03-19 17:52:39 +00:00
committed by intellij-monorepo-bot
parent 43d79c35b7
commit aca13a18bf
3 changed files with 6 additions and 6 deletions
@@ -153,7 +153,7 @@ public final class AcceptedLanguageLevelsSettings implements PersistentStateComp
if (ApplicationManager.getApplication().isEAP()) return true;
// language levels up to HIGHEST are officially supported
var nonPreviewLevel = languageLevel.getNonPreviewLevel();
return nonPreviewLevel != null && JavaRelease.getHighest().compareTo(nonPreviewLevel) >= 0 || getSettings().acceptedNames.contains(languageLevel.name());
return JavaRelease.getHighest().compareTo(nonPreviewLevel) >= 0 || getSettings().acceptedNames.contains(languageLevel.name());
}
private static void acceptAndRestore(Project project, Collection<? extends Module> modules, LanguageLevel languageLevel) {
@@ -123,11 +123,11 @@ enum class LanguageLevel {
}
/**
* @return corresponding non-preview level, `this` if this level is non-preview already, `null` if the level is unreleased and unsupported
* @return corresponding non-preview level, `this` for [JDK_X] and non-preview levels.
*/
fun getNonPreviewLevel(): LanguageLevel? {
if (!isPreview) return this
return ourStandardVersions[myVersion.feature]
fun getNonPreviewLevel(): LanguageLevel {
if (!isPreview || this == JDK_X) return this
return requireNotNull(ourStandardVersions[myVersion.feature])
}
val presentableText: @Nls String
@@ -99,7 +99,7 @@ class GradleJavaCompilerSettingsImportingTest : GradleJavaCompilerSettingsImport
@Test
fun `test language level approximation`() {
val highest = JavaRelease.getHighest()
val nonPreview = highest.getNonPreviewLevel()!!
val nonPreview = highest.getNonPreviewLevel()
val preview = nonPreview.getPreviewLevel()
Assume.assumeTrue("The IDE $highest Java version doesn't have preview level",