From 6a7355dae7f2e40d7ed42307a340fcf55d0c092e Mon Sep 17 00:00:00 2001 From: Mikhail Pyltsin Date: Thu, 7 Dec 2023 15:37:28 +0100 Subject: [PATCH] [java-highlighting] IDEA-340074 Return name for classes inside implicit classes - fix Make static incorrect works with classes inside implicitly declared classes GitOrigin-RevId: a16063a97735065761868d4e3da68220293a4d51 --- .../src/com/intellij/psi/impl/source/PsiClassImpl.java | 2 ++ .../ImplicitClassNoFix.after.java | 7 +++++++ .../inner_class_may_be_static/ImplicitClassNoFix.java | 7 +++++++ .../ig/memory/InnerClassMayBeStaticInspectionTest.java | 7 +++++++ 4 files changed, 23 insertions(+) create mode 100644 java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.after.java create mode 100644 java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.java diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassImpl.java index adf2722779d1..325b1a326e0f 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiClassImpl.java @@ -156,6 +156,8 @@ public class PsiClassImpl extends JavaStubPsiElement> implements return StringUtil.getQualifiedName(((PsiJavaFile)parent).getPackageName(), StringUtil.notNullize(getName())); } if (parent instanceof PsiClass) { + //it cannot be referenced outside ImplicitClass + if (parent instanceof PsiImplicitClass) return StringUtil.notNullize(getName()); String parentQName = ((PsiClass)parent).getQualifiedName(); if (parentQName == null) return null; return StringUtil.getQualifiedName(parentQName, StringUtil.notNullize(getName())); diff --git a/java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.after.java b/java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.after.java new file mode 100644 index 000000000000..aab88fb57ad9 --- /dev/null +++ b/java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.after.java @@ -0,0 +1,7 @@ +private static class Nested { +} + +void main() { + new Nested(); +} + diff --git a/java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.java b/java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.java new file mode 100644 index 000000000000..388f52fda6e7 --- /dev/null +++ b/java/java-tests/testData/ig/com/siyeh/igtest/memory/inner_class_may_be_static/ImplicitClassNoFix.java @@ -0,0 +1,7 @@ +private class Nested { +} + +void main() { + new Nested(); +} + diff --git a/java/java-tests/testSrc/com/siyeh/ig/memory/InnerClassMayBeStaticInspectionTest.java b/java/java-tests/testSrc/com/siyeh/ig/memory/InnerClassMayBeStaticInspectionTest.java index c2a410a3f1ca..20c2d4b881f1 100644 --- a/java/java-tests/testSrc/com/siyeh/ig/memory/InnerClassMayBeStaticInspectionTest.java +++ b/java/java-tests/testSrc/com/siyeh/ig/memory/InnerClassMayBeStaticInspectionTest.java @@ -30,6 +30,13 @@ public class InnerClassMayBeStaticInspectionTest extends LightJavaInspectionTest }); } + public void testImplicitClassNoFix() { + IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_21_PREVIEW, () -> { + doTest(); + checkQuickFixAll(); + }); + } + @Nullable @Override protected InspectionProfileEntry getInspection() {