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 8c61c3957616..95e3b913fbb0 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 @@ -21,7 +21,6 @@ import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.psi.search.SearchScope; import com.intellij.psi.stub.JavaStubImplUtil; -import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.PsiFileStub; import com.intellij.psi.stubs.StubElement; import com.intellij.psi.tree.IElementType; @@ -116,18 +115,7 @@ public class PsiClassImpl extends JavaStubPsiElement> implements if (stub != null) { return stub.getParentStub().getPsi(); } - - ASTNode treeElement = getNode(); - ASTNode parent = treeElement.getTreeParent(); - - while(parent != null) { - if (parent.getElementType() instanceof IStubElementType){ - return parent.getPsi(); - } - parent = parent.getTreeParent(); - } - - return getContainingFile(); + return PsiTreeUtil.getParentOfType(this, PsiMember.class, PsiFile.class); } @Override diff --git a/java/java-tests/testData/ig/com/siyeh/igtest/performance/class_initializer_may_be_static/NoStaticInInnerClass.java b/java/java-tests/testData/ig/com/siyeh/igtest/performance/class_initializer_may_be_static/NoStaticInInnerClass.java new file mode 100644 index 000000000000..cfc97ba04342 --- /dev/null +++ b/java/java-tests/testData/ig/com/siyeh/igtest/performance/class_initializer_may_be_static/NoStaticInInnerClass.java @@ -0,0 +1,12 @@ +class NoStaticInInnerClass { + + { + new Inner(); + } + + class Inner { + { + System.out.println("Sunshine and happiness"); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testData/ig/com/siyeh/igtest/performance/method_may_be_static/MethodMayBeStatic.java b/java/java-tests/testData/ig/com/siyeh/igtest/performance/method_may_be_static/MethodMayBeStatic.java index 8948022c052b..8d5c1246bf4d 100644 --- a/java/java-tests/testData/ig/com/siyeh/igtest/performance/method_may_be_static/MethodMayBeStatic.java +++ b/java/java-tests/testData/ig/com/siyeh/igtest/performance/method_may_be_static/MethodMayBeStatic.java @@ -97,4 +97,11 @@ class WithArrayReference { private void foo() { IntSupplier aNew = Object[]::new; } +} +class InnerClassScope { + class Inner {} + + Inner create() { + return new Inner(); + } } \ No newline at end of file diff --git a/java/java-tests/testSrc/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspectionTest.java b/java/java-tests/testSrc/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspectionTest.java index 83d120b1ae8b..51ca0b46db00 100644 --- a/java/java-tests/testSrc/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspectionTest.java +++ b/java/java-tests/testSrc/com/siyeh/ig/performance/ClassInitializerMayBeStaticInspectionTest.java @@ -1,7 +1,9 @@ -// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.siyeh.ig.performance; import com.intellij.codeInspection.InspectionProfileEntry; +import com.intellij.pom.java.LanguageLevel; +import com.intellij.testFramework.IdeaTestUtil; import com.siyeh.ig.LightJavaInspectionTestCase; import org.jetbrains.annotations.Nullable; @@ -14,6 +16,10 @@ public class ClassInitializerMayBeStaticInspectionTest extends LightJavaInspecti public void testAnonymousClass() { doTest(); } + + public void testNoStaticInInnerClass() { + IdeaTestUtil.withLevel(getModule(), LanguageLevel.JDK_15, this::doTest); + } @Nullable @Override