[java-inspections] IDEA-363980 Support JEP 495. Update ImplicitToExplicit /ExplicitToImplicit inspections

- tests

(cherry picked from commit 946428cb5f8e397625acbec9446d731fb0550225)

GitOrigin-RevId: b7240b0999796cb367dd01eb49ff51b63004de94
This commit is contained in:
Mikhail Pyltsin
2024-12-06 13:01:39 +01:00
committed by intellij-monorepo-bot
parent 3348e7291f
commit dcb8e7a582
7 changed files with 58 additions and 4 deletions

View File

@@ -186,10 +186,10 @@ public final class ExplicitToImplicitClassMigrationInspection extends AbstractBa
} }
for (SmartPsiElementPointer<PsiImportStatementBase> pointer : pointers) { for (SmartPsiElementPointer<PsiImportStatementBase> pointer : pointers) {
PsiImportStatementBase pointerElement = pointer.getElement(); PsiImportStatementBase importStatementBase = pointer.getElement();
if (pointerElement == null) continue; if (importStatementBase == null) continue;
if (!pointerElement.isOnDemand()) continue; if (!importStatementBase.isOnDemand()) continue;
ReplaceOnDemandImportIntention.replaceOnDemand(pointerElement); ReplaceOnDemandImportIntention.replaceOnDemand(importStatementBase);
} }
} }
PsiClass psiClass = ObjectUtils.tryCast(element, PsiClass.class); PsiClass psiClass = ObjectUtils.tryCast(element, PsiClass.class);

View File

@@ -0,0 +1,6 @@
import p.List;
public static void main(Strin<caret>g[] args) {
List a = null;
System.out.println("Hello, world!");
}

View File

@@ -0,0 +1,9 @@
import p.*;
<warning descr="Explicit class declaration can be converted into implicitly declared class">public class beforeWithImport<caret>ConflictDemandsOverModule</warning> {
public static void main(String[] args) {
List a = null;
System.out.println("Hello, world!");
}
}

View File

@@ -0,0 +1,7 @@
import test.List;
public class beforeC<caret>onflictModuleImportDemandOverModule {
public static void main(String[] args) {
List a = null;
}
}

View File

@@ -0,0 +1,5 @@
import test.*;
public static void m<caret>ain(String[] args) {
List a = null;
}

View File

@@ -5,6 +5,8 @@ import com.intellij.JavaTestUtil;
import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInspection.ExplicitToImplicitClassMigrationInspection; import com.intellij.codeInspection.ExplicitToImplicitClassMigrationInspection;
import com.intellij.java.JavaBundle; import com.intellij.java.JavaBundle;
import com.intellij.pom.java.JavaFeature;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -49,6 +51,19 @@ public class ExplicitToImplicitClassMigrationInspectionInspectionTest extends Li
doTest(); doTest();
} }
public void testWithImportConflictDemandsOverModule() {
IdeaTestUtil.withLevel(getModule(), JavaFeature.PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS.getMinimumLevel(), () -> {
myFixture.addClass(
"""
package p;
public class List{}
"""
);
doTest();
}
);
}
private void doNotFind() { private void doNotFind() {
myFixture.enableInspections(new ExplicitToImplicitClassMigrationInspection()); myFixture.enableInspections(new ExplicitToImplicitClassMigrationInspection());
myFixture.testHighlighting(true, false, true, "before" + getTestName(false) + ".java"); myFixture.testHighlighting(true, false, true, "before" + getTestName(false) + ".java");

View File

@@ -4,6 +4,8 @@ package com.intellij.java.codeInspection;
import com.intellij.JavaTestUtil; import com.intellij.JavaTestUtil;
import com.intellij.codeInspection.ImplicitToExplicitClassBackwardMigrationInspection; import com.intellij.codeInspection.ImplicitToExplicitClassBackwardMigrationInspection;
import com.intellij.java.JavaBundle; import com.intellij.java.JavaBundle;
import com.intellij.pom.java.JavaFeature;
import com.intellij.testFramework.IdeaTestUtil;
import com.intellij.testFramework.LightProjectDescriptor; import com.intellij.testFramework.LightProjectDescriptor;
import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase; import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -54,4 +56,14 @@ public class ImplicitToExplicitClassBackwardMigrationInspectionTest extends Ligh
"""); """);
doTest(); doTest();
} }
public void testConflictModuleImportDemandOverModule() {
IdeaTestUtil.withLevel(getModule(), JavaFeature.PACKAGE_IMPORTS_SHADOW_MODULE_IMPORTS.getMinimumLevel(), () -> {
myFixture.addClass("""
package test;
public class List {}
""");
doTest();
});
}
} }