diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport.java
new file mode 100644
index 000000000000..ef2965d2e8a7
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport.java
@@ -0,0 +1,4 @@
+import foo.bar.Baz;
+
+class Foo {
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport2.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport2.java
new file mode 100644
index 000000000000..8a6c1d755602
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport2.java
@@ -0,0 +1,6 @@
+import foo.bar.Baz;
+import java.util.List;
+
+class Foo {
+ void test(Baz baz) {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport2_after.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport2_after.java
new file mode 100644
index 000000000000..c1e8fbb70329
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport2_after.java
@@ -0,0 +1,5 @@
+import foo.bar.Baz;
+
+class Foo {
+ void test(Baz baz) {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportNoIntention.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportNoIntention.java
new file mode 100644
index 000000000000..51e29cb8ea97
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportNoIntention.java
@@ -0,0 +1,5 @@
+import foo.bar.Baz;
+
+class Foo {
+ void test(Baz baz) {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemand.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemand.java
new file mode 100644
index 000000000000..68285cf8b71e
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemand.java
@@ -0,0 +1,6 @@
+import foo.bar.*;
+import static java.util.Arrays.asList;
+
+class Foo {
+ void test(Baz baz) {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemandNoIntention.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemandNoIntention.java
new file mode 100644
index 000000000000..c8010c4cd765
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemandNoIntention.java
@@ -0,0 +1,5 @@
+import foo.bar.*;
+
+class Foo {
+ void test(Baz baz) {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemand_after.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemand_after.java
new file mode 100644
index 000000000000..223ea38a4714
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImportOnDemand_after.java
@@ -0,0 +1,5 @@
+import foo.bar.*;
+
+class Foo {
+ void test(Baz baz) {}
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport_after.java b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport_after.java
new file mode 100644
index 000000000000..d7607d58d239
--- /dev/null
+++ b/java/java-tests/testData/psi/optimizeImports/OptimizeImportNotOnTheFlyInvalidImport_after.java
@@ -0,0 +1,2 @@
+class Foo {
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/java/psi/OptimizeImportsTest.java b/java/java-tests/testSrc/com/intellij/java/psi/OptimizeImportsTest.java
index ef691f3c3120..8e8550e52294 100644
--- a/java/java-tests/testSrc/com/intellij/java/psi/OptimizeImportsTest.java
+++ b/java/java-tests/testSrc/com/intellij/java/psi/OptimizeImportsTest.java
@@ -328,7 +328,7 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase {
package one;
public interface Super {
class Result {}
-
+
Result x();
}
""");
@@ -412,7 +412,7 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase {
}
}
- public void testNoStubPsiMismatchOnRecordInsideImportList() throws Exception {
+ public void testNoStubPsiMismatchOnRecordInsideImportList() {
myFixture.enableInspections(new UnusedImportInspection());
myFixture.configureByText("a.java", """
import java.util.List;
@@ -446,14 +446,44 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase {
}
public void testOptimizeImportNotOnTheFly() {
+ checkOptimizeImport();
+ }
+
+ public void testOptimizeImportNotOnTheFlyInvalidImport() {
+ checkOptimizeImport();
+ }
+
+ public void testOptimizeImportNotOnTheFlyInvalidImport2() {
+ checkOptimizeImport();
+ }
+
+ public void testOptimizeImportNotOnTheFlyInvalidImportNoIntention() {
+ checkOptimizeImportNoIntention();
+ }
+
+ public void testOptimizeImportNotOnTheFlyInvalidImportOnDemand() {
+ checkOptimizeImport();
+ }
+
+ public void testOptimizeImportNotOnTheFlyInvalidImportOnDemandNoIntention() {
+ checkOptimizeImportNoIntention();
+ }
+
+ private void checkOptimizeImport() {
myFixture.enableInspections(new MissortedImportsInspection(), new UnusedImportInspection());
myFixture.testHighlighting(getTestName(false) + ".java");
IntentionAction intention = myFixture.findSingleIntention(QuickFixBundle.message("optimize.imports.fix"));
- assertNotNull(intention);
myFixture.launchAction(intention);
myFixture.checkResultByFile(getTestName(false) + "_after.java");
}
+ private void checkOptimizeImportNoIntention() {
+ myFixture.enableInspections(new MissortedImportsInspection(), new UnusedImportInspection());
+ myFixture.testHighlighting(getTestName(false) + ".java");
+ IntentionAction intention = myFixture.getAvailableIntention(QuickFixBundle.message("optimize.imports.fix"));
+ assertNull(intention);
+ }
+
public void testRemovingAllUnusedImports() throws Exception {
myFixture.enableInspections(new UnusedImportInspection());
myFixture.configureByText("a.java", """
@@ -669,7 +699,7 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase {
package one;
public interface Super {
class List {}
-
+
List x();
}
""");