mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] Set the highest released language level through the registry
This will allow changing the language level combobox through the cloud registry. #IDEA-369013 Fixed GitOrigin-RevId: 1874b9aa5f617795a239f3941572318fc64f1b25
This commit is contained in:
committed by
intellij-monorepo-bot
parent
79272e4048
commit
dd358bc239
@@ -29,8 +29,8 @@ abstract class LanguageLevelCombo @JvmOverloads constructor(
|
||||
val items = mutableListOf<Any>()
|
||||
items.add(defaultItem ?: "")
|
||||
|
||||
val highestPreviewLevel = LanguageLevel.HIGHEST.getPreviewLevel()
|
||||
val highestWithPreview = highestPreviewLevel ?: LanguageLevel.HIGHEST
|
||||
val highestLanguageLevel = AcceptedLanguageLevelsSettings.getHighest()
|
||||
val highestWithPreview = highestLanguageLevel.getPreviewLevel() ?: highestLanguageLevel
|
||||
|
||||
fun MutableList<Any>.filterAndAdd(levels: Collection<LanguageLevel>) = levels.filter(levelFilter).also { addAll(it) }
|
||||
|
||||
|
||||
@@ -324,6 +324,9 @@
|
||||
<registryKey key="java.test.enable.tree.live.time" defaultValue="true"
|
||||
description="Enable live time for tests" restartRequired="true"/>
|
||||
|
||||
<registryKey key="java.highest.language.level" defaultValue="24"
|
||||
description="Highest released language level" restartRequired="false"/>
|
||||
|
||||
<registryKey key="index.ids.from.java.sources.in.jar" defaultValue="true"
|
||||
description="Index ids from class files instead of source files in JARs" restartRequired="false"/>
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.pom.java;
|
||||
|
||||
import com.intellij.ide.IdeBundle;
|
||||
@@ -21,6 +21,7 @@ import com.intellij.openapi.roots.JavaProjectModelModificationService;
|
||||
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.ui.components.LegalNoticeDialog;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.xmlb.XmlSerializerUtil;
|
||||
@@ -148,7 +149,7 @@ public final class AcceptedLanguageLevelsSettings implements PersistentStateComp
|
||||
//allow custom features to appear in EAP
|
||||
if (ApplicationManager.getApplication().isEAP()) return true;
|
||||
// language levels up to HIGHEST are officially supported
|
||||
return LanguageLevel.HIGHEST.compareTo(languageLevel) >= 0 || getSettings().acceptedNames.contains(languageLevel.name());
|
||||
return getHighest().compareTo(languageLevel) >= 0 || getSettings().acceptedNames.contains(languageLevel.name());
|
||||
}
|
||||
|
||||
private static void acceptAndRestore(Project project, Collection<? extends Module> modules, LanguageLevel languageLevel) {
|
||||
@@ -172,8 +173,22 @@ public final class AcceptedLanguageLevelsSettings implements PersistentStateComp
|
||||
}
|
||||
}
|
||||
|
||||
public static LanguageLevel getHighestAcceptedLevel() {
|
||||
LanguageLevel highest = LanguageLevel.HIGHEST;
|
||||
/**
|
||||
* @return the highest stable language level for Java.
|
||||
*/
|
||||
public static @NotNull LanguageLevel getHighest() {
|
||||
LanguageLevel languageLevel = LanguageLevel.forFeature(Registry.intValue("java.highest.language.level"));
|
||||
if (languageLevel == null) throw new IllegalStateException("Highest language level could not be found");
|
||||
return languageLevel;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return the highest stable language level for Java, or a preview language level if the user has accepted the legal notice or is using
|
||||
* an EAP version.
|
||||
*/
|
||||
public static @NotNull LanguageLevel getHighestAcceptedLevel() {
|
||||
LanguageLevel highest = getHighest();
|
||||
for (LanguageLevel level : LanguageLevel.values()) {
|
||||
if (isLanguageLevelAccepted(level)) {
|
||||
highest = level;
|
||||
@@ -246,7 +261,7 @@ public final class AcceptedLanguageLevelsSettings implements PersistentStateComp
|
||||
private static @NotNull LanguageLevel adjustLanguageLevel(@NotNull LanguageLevel languageLevel) {
|
||||
if (isLanguageLevelAccepted(languageLevel)) return languageLevel;
|
||||
LanguageLevel highestAcceptedLevel = getHighestAcceptedLevel();
|
||||
return highestAcceptedLevel.isAtLeast(languageLevel) ? LanguageLevel.HIGHEST : highestAcceptedLevel;
|
||||
return highestAcceptedLevel.isAtLeast(languageLevel) ? getHighest() : highestAcceptedLevel;
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
|
||||
Reference in New Issue
Block a user