mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
[java-highlighting] IDEA-369743 Incorrect proposed language level for fixes for "statements before super"
GitOrigin-RevId: 94aaaa37713d2df34c939298d3bc1be721e7ac38
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6e03fad518
commit
b4cd5437e0
@@ -136,6 +136,8 @@ enum class JavaFeature {
|
||||
override fun isSufficient(useSiteLevel: LanguageLevel): Boolean {
|
||||
return super.isSufficient(useSiteLevel) || useSiteLevel.isAtLeast(LanguageLevel.JDK_25)
|
||||
}
|
||||
|
||||
override val standardLevel: LanguageLevel = LanguageLevel.JDK_25
|
||||
},
|
||||
/**
|
||||
* Was a preview feature in Java 20 Preview.
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
public class Sample extends Parent {
|
||||
public Sample() {
|
||||
int a = 1;
|
||||
super<caret>(a);
|
||||
}
|
||||
}
|
||||
|
||||
class Parent{
|
||||
public Parent(int a) {
|
||||
}
|
||||
}
|
||||
+98
-84
@@ -17,15 +17,100 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class IncreaseLanguageLevelFixTest extends LightDaemonAnalyzerTestCase {
|
||||
@Override
|
||||
protected @NotNull String getTestDataPath() {
|
||||
return JavaTestUtil.getJavaTestDataPath() + "/codeInsight/daemonCodeAnalyzer/increaseLanguageLevel/";
|
||||
public abstract class IncreaseLanguageLevelFixTest extends LightDaemonAnalyzerTestCase {
|
||||
public static class IncreaseLanguageLevel25FixTest extends IncreaseLanguageLevelFixTest {
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
return IdeaTestUtil.getMockJdk(JavaVersion.compose(25));
|
||||
}
|
||||
|
||||
public void testStatementBeforeSuper() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_24, () -> doTest(LanguageLevel.JDK_25));
|
||||
}
|
||||
}
|
||||
|
||||
public static class IncreaseLanguageLevel23FixTest extends IncreaseLanguageLevelFixTest {
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
return IdeaTestUtil.getMockJdk(JavaVersion.compose(23));
|
||||
}
|
||||
|
||||
public void testVarLocal() {
|
||||
doTest(LanguageLevel.JDK_10);
|
||||
}
|
||||
|
||||
public void testVarLambda() {
|
||||
doTest(LanguageLevel.JDK_11);
|
||||
}
|
||||
|
||||
public void testRecordTopLevel() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_15, () -> doTest(LanguageLevel.JDK_16));
|
||||
}
|
||||
|
||||
public void testRecordInClass() {
|
||||
doTest(LanguageLevel.JDK_16);
|
||||
}
|
||||
|
||||
public void testRecordInMethod() {
|
||||
doTest(LanguageLevel.JDK_16);
|
||||
}
|
||||
|
||||
public void testSealedClasses() {
|
||||
doTest(LanguageLevel.JDK_17);
|
||||
}
|
||||
|
||||
public void testInstanceofWithPrimitives() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorBoolean() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorByte() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorChar() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorDouble() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorFloat() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorInt() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorLong() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorShort() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testDeconstructionWithPrimitives() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitivePattern() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorAndPattern() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
return IdeaTestUtil.getMockJdk(JavaVersion.compose(23));
|
||||
protected @NotNull String getTestDataPath() {
|
||||
return JavaTestUtil.getJavaTestDataPath() + "/codeInsight/daemonCodeAnalyzer/increaseLanguageLevel/";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -33,87 +118,15 @@ public class IncreaseLanguageLevelFixTest extends LightDaemonAnalyzerTestCase {
|
||||
return LanguageLevel.JDK_1_8;
|
||||
}
|
||||
|
||||
public void testVarLocal() {
|
||||
doTest(LanguageLevel.JDK_10);
|
||||
}
|
||||
|
||||
public void testVarLambda() {
|
||||
doTest(LanguageLevel.JDK_11);
|
||||
}
|
||||
|
||||
public void testRecordTopLevel() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_15, () -> doTest(LanguageLevel.JDK_16));
|
||||
}
|
||||
|
||||
public void testRecordInClass() {
|
||||
doTest(LanguageLevel.JDK_16);
|
||||
}
|
||||
|
||||
public void testRecordInMethod() {
|
||||
doTest(LanguageLevel.JDK_16);
|
||||
}
|
||||
|
||||
public void testSealedClasses() {
|
||||
doTest(LanguageLevel.JDK_17);
|
||||
}
|
||||
|
||||
public void testInstanceofWithPrimitives() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorBoolean() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorByte() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorChar() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorDouble() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorFloat() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorInt() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorLong() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorShort() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTestNotExpected(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testDeconstructionWithPrimitives() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitivePattern() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
public void testSwitchWithPrimitiveSelectorAndPattern() {
|
||||
IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21, () -> doTest(JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel()));
|
||||
}
|
||||
|
||||
private void doTest(LanguageLevel level) {
|
||||
protected void doTest(LanguageLevel level) {
|
||||
doTest(level, true);
|
||||
}
|
||||
|
||||
private void doTestNotExpected(LanguageLevel level) {
|
||||
protected void doTestNotExpected(LanguageLevel level) {
|
||||
doTest(level, false);
|
||||
}
|
||||
|
||||
private void doTest(LanguageLevel level, boolean expected) {
|
||||
protected void doTest(LanguageLevel level, boolean expected) {
|
||||
configureByFile(getTestName(false) + ".java");
|
||||
doHighlighting();
|
||||
List<IntentionAction> actions = CodeInsightTestFixtureImpl.getAvailableIntentions(getEditor(), getFile());
|
||||
@@ -127,12 +140,13 @@ public class IncreaseLanguageLevelFixTest extends LightDaemonAnalyzerTestCase {
|
||||
act -> act.getText().equals(JavaBundle.message("set.language.level.to.0", l.getPresentableText()))
|
||||
));
|
||||
if (foundLevel != null) {
|
||||
fail("Expected level: "+level+"; actual: "+foundLevel);
|
||||
} else {
|
||||
fail("Expected level: " + level + "; actual: " + foundLevel);
|
||||
}
|
||||
else {
|
||||
fail("Action " + message + " not found");
|
||||
}
|
||||
}
|
||||
else if(foundAction != null && !expected) {
|
||||
else if (foundAction != null && !expected) {
|
||||
String actualPreview = IntentionPreviewPopupUpdateProcessor.getPreviewContent(getProject(), foundAction, getFile(), getEditor());
|
||||
JavaVersion javaVersion = level.toJavaVersion();
|
||||
String expectedPreview = JavaBundle.message("increase.language.level.preview.description", getModule().getName(), javaVersion);
|
||||
|
||||
Reference in New Issue
Block a user