diff --git a/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/JavaLangClassMemberReference.java b/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/JavaLangClassMemberReference.java index 577cc3e17408..4b24e3518867 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/JavaLangClassMemberReference.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/JavaLangClassMemberReference.java @@ -186,7 +186,7 @@ public class JavaLangClassMemberReference extends PsiReferenceBase argumentTypes) { // Get nested classes because they need to be passed if not static List enclosingClasses = PsiTreeUtil.collectParents(method, PsiClass.class, false, parent -> { - return parent instanceof PsiFile || parent instanceof PsiClass cls && cls.hasModifier(JvmModifier.STATIC); + return parent instanceof PsiFile || (parent instanceof PsiModifierListOwner cls && cls.hasModifier(JvmModifier.STATIC)); }); if (!enclosingClasses.isEmpty()) { // the containing class of the method doesn't need to be passed diff --git a/java/java-tests/testData/inspection/javaReflectionMemberAccess/ConstructorLocalClassInStaticMethod.java b/java/java-tests/testData/inspection/javaReflectionMemberAccess/ConstructorLocalClassInStaticMethod.java new file mode 100644 index 000000000000..6a299d8a5e56 --- /dev/null +++ b/java/java-tests/testData/inspection/javaReflectionMemberAccess/ConstructorLocalClassInStaticMethod.java @@ -0,0 +1,15 @@ +class Constructors { + public static void testConstructorInStatic() throws Exception { + class X { + X(int i) {} + class Y { + Y() {} + Y(String a) {} + } + } + + X.class.getDeclaredConstructor(int.class); + X.Y.class.getDeclaredConstructor(X.class); + X.Y.class.getDeclaredConstructor(X.class, String.class); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaReflectionMemberAccessTest.kt b/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaReflectionMemberAccessTest.kt index ad64a4f26041..40f6ab30c4cb 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaReflectionMemberAccessTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/JavaReflectionMemberAccessTest.kt @@ -28,6 +28,7 @@ class JavaReflectionMemberAccessTest : LightJavaCodeInsightFixtureTestCase() { fun testConstructorExists() = doTest(true) fun testConstructorInnerClass() = doTest(true) fun testConstructorLocalClass() = doTest(true) + fun testConstructorLocalClassInStaticMethod() = doTest(true) fun testNewInstance() = doTest(true) fun testBugs() = doTest(true)