diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/qualifyMethodCall/beforeNonStaticMethodFromStaticContext4.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/qualifyMethodCall/beforeNonStaticMethodFromStaticContext4.java new file mode 100644 index 000000000000..3e15ed94fcb2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/qualifyMethodCall/beforeNonStaticMethodFromStaticContext4.java @@ -0,0 +1,16 @@ +// "Qualify the call with 'A.this'" "false" +class A { + class B { + static String name(String key) { + return ""; + } + + static { + String s = name(); + } + } + + String name(){ + return ""; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/qualifyMethodCall/beforeNonStaticMethodFromStaticContext5.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/qualifyMethodCall/beforeNonStaticMethodFromStaticContext5.java new file mode 100644 index 000000000000..7dfd6a51d077 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/qualifyMethodCall/beforeNonStaticMethodFromStaticContext5.java @@ -0,0 +1,14 @@ +// "Qualify the call with 'A.this'" "false" +class A { + class B { + static String name(String key) { + return ""; + } + + static String s = name(); + } + + String name(){ + return ""; + } +} diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java index 1c6dd4a3ed03..c2ba3cd8e130 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -971,13 +971,12 @@ public final class ExpressionUtils { * or if reference points to non-static member of class from static context */ public static PsiExpression getEffectiveQualifier(@NotNull PsiReferenceExpression ref, @NotNull PsiMember member) { - PsiElementFactory factory = JavaPsiFacade.getElementFactory(ref.getProject()); - PsiClass memberClass = member.getContainingClass(); - PsiMethod containingMethod = PsiTreeUtil.getParentOfType(ref, PsiMethod.class); - PsiClassInitializer classInitializer = PsiTreeUtil.getParentOfType(ref, PsiClassInitializer.class); - if (!member.hasModifierProperty(PsiModifier.STATIC) && (isStaticMember(containingMethod) || isStaticMember(classInitializer))) { + PsiMember containingMember = PsiTreeUtil.getParentOfType(ref, PsiMethod.class, PsiClassInitializer.class, PsiField.class); + if (!member.hasModifierProperty(PsiModifier.STATIC) && isStaticMember(containingMember)) { return null; } + PsiElementFactory factory = JavaPsiFacade.getElementFactory(ref.getProject()); + PsiClass memberClass = member.getContainingClass(); if (memberClass != null) { if (member.hasModifierProperty(PsiModifier.STATIC)) { return factory.createReferenceExpression(memberClass);