From 1192817c917e7b250a437373fbc3d361d79515ca Mon Sep 17 00:00:00 2001 From: Georgii Ustinov Date: Wed, 9 Apr 2025 15:21:38 +0300 Subject: [PATCH] [Java. Intention Actions] Do not add implicitly declared class to import list ^IDEA-370603 fixed GitOrigin-RevId: 0cfcef57e1b1dbccea05ab68a57c8906df0e753c --- .../intellij/psi/impl/source/codeStyle/ImportHelper.java | 3 +++ .../testData/psi/optimizeImports/InvalidExtendsList.java | 7 +++++++ .../psi/optimizeImports/InvalidExtendsList_after.java | 7 +++++++ .../testSrc/com/intellij/java/psi/OptimizeImportsTest.java | 2 ++ 4 files changed, 19 insertions(+) create mode 100644 java/java-tests/testData/psi/optimizeImports/InvalidExtendsList.java create mode 100644 java/java-tests/testData/psi/optimizeImports/InvalidExtendsList_after.java diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java index 089ce9f55bf4..45af4f0488db 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java @@ -1186,6 +1186,9 @@ public final class ImportHelper { } if (refElement instanceof PsiClass psiClass) { + // Implicitly declared classed are not accessible outside the file, so it is not possible to have import statement on them. + if (refElement.getParent() instanceof PsiImplicitClass) continue; + String qName = psiClass.getQualifiedName(); if (qName == null || hasPackage(qName, thisPackageName)) continue; imports.add(new Import(qName, false)); diff --git a/java/java-tests/testData/psi/optimizeImports/InvalidExtendsList.java b/java/java-tests/testData/psi/optimizeImports/InvalidExtendsList.java new file mode 100644 index 000000000000..1c0ef43dbe84 --- /dev/null +++ b/java/java-tests/testData/psi/optimizeImports/InvalidExtendsList.java @@ -0,0 +1,7 @@ +package B; + +public class A extends { + public A() { + + } +} diff --git a/java/java-tests/testData/psi/optimizeImports/InvalidExtendsList_after.java b/java/java-tests/testData/psi/optimizeImports/InvalidExtendsList_after.java new file mode 100644 index 000000000000..1c0ef43dbe84 --- /dev/null +++ b/java/java-tests/testData/psi/optimizeImports/InvalidExtendsList_after.java @@ -0,0 +1,7 @@ +package B; + +public class A extends { + public A() { + + } +} 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 19860bffed5a..33f69ca353e3 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/OptimizeImportsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/psi/OptimizeImportsTest.java @@ -772,6 +772,8 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase { public void testUnresolvedReferenceAfterParenthesis() { doTest(); } + + public void testInvalidExtendsList() { doTest(); } private void doTest() { doTest(".java");