mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
suggest to increase language level to 14 for switch expressions on jdk 14 (IDEA-230871)
GitOrigin-RevId: 003686c3fbb16c27b9a880c89bdfeb9602a2467c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
43ef17b8b8
commit
705d3862f0
+30
-1
@@ -21,6 +21,7 @@ import com.intellij.openapi.module.EffectiveLanguageLevelUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
import com.intellij.openapi.projectRoots.JavaSdkVersion;
|
||||
import com.intellij.openapi.projectRoots.JavaSdkVersionUtil;
|
||||
import com.intellij.openapi.roots.impl.FilePropertyPusher;
|
||||
import com.intellij.openapi.roots.impl.JavaLanguageLevelPusher;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
@@ -3228,12 +3229,22 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
boolean isSufficient(LanguageLevel useSiteLevel) {
|
||||
return useSiteLevel.isAtLeast(LanguageLevel.JDK_13_PREVIEW);//enabled in jdk 14 as standard
|
||||
}
|
||||
|
||||
@Override
|
||||
LanguageLevel getStandardLevel() {
|
||||
return LanguageLevel.JDK_14;
|
||||
}
|
||||
},
|
||||
SWITCH_EXPRESSION(LanguageLevel.JDK_13_PREVIEW, "feature.switch.expressions") {
|
||||
@Override
|
||||
boolean isSufficient(LanguageLevel useSiteLevel) {
|
||||
return useSiteLevel.isAtLeast(LanguageLevel.JDK_13_PREVIEW);//enabled in jdk 14 as standard
|
||||
}
|
||||
|
||||
@Override
|
||||
LanguageLevel getStandardLevel() {
|
||||
return LanguageLevel.JDK_14;
|
||||
}
|
||||
},
|
||||
TEXT_BLOCKS(LanguageLevel.JDK_13_PREVIEW, "feature.text.blocks"),
|
||||
RECORDS(LanguageLevel.JDK_14_PREVIEW, "feature.records"),
|
||||
@@ -3259,6 +3270,24 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
boolean isSufficient(LanguageLevel useSiteLevel) {
|
||||
return useSiteLevel.isAtLeast(level) && (!level.isPreview() || useSiteLevel.isPreview());
|
||||
}
|
||||
|
||||
/**
|
||||
* Override if feature was preview and then accepted as standard
|
||||
*/
|
||||
LanguageLevel getStandardLevel() {
|
||||
return level.isPreview() ? null : level;
|
||||
}
|
||||
}
|
||||
|
||||
private static LanguageLevel getApplicableLevel(PsiFile file, Feature feature) {
|
||||
LanguageLevel standardLevel = feature.getStandardLevel();
|
||||
if (standardLevel != null && feature.level.isPreview()) {
|
||||
JavaSdkVersion sdkVersion = JavaSdkVersionUtil.getJavaSdkVersion(file);
|
||||
if (sdkVersion != null && sdkVersion.isAtLeast(JavaSdkVersion.fromLanguageLevel(standardLevel))) {
|
||||
return standardLevel;
|
||||
}
|
||||
}
|
||||
return feature.level;
|
||||
}
|
||||
|
||||
static HighlightInfo checkFeature(@NotNull PsiElement element,
|
||||
@@ -3268,7 +3297,7 @@ public class HighlightUtil extends HighlightUtilBase {
|
||||
if (file.getManager().isInProject(file) && !feature.isSufficient(level)) {
|
||||
String message = getUnsupportedFeatureMessage(element, feature, level, file);
|
||||
HighlightInfo info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(element).descriptionAndTooltip(message).create();
|
||||
QuickFixAction.registerQuickFixAction(info, QUICK_FIX_FACTORY.createIncreaseLanguageLevelFix(feature.level));
|
||||
QuickFixAction.registerQuickFixAction(info, QUICK_FIX_FACTORY.createIncreaseLanguageLevelFix(getApplicableLevel(file, feature)));
|
||||
QuickFixAction.registerQuickFixAction(info, QUICK_FIX_FACTORY.createShowModulePropertiesFix(element));
|
||||
return info;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user