diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/deprecation/DeprecationInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/deprecation/DeprecationInspectionBase.java index 61552131005e..3d1a10924810 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/deprecation/DeprecationInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/deprecation/DeprecationInspectionBase.java @@ -234,6 +234,12 @@ public abstract class DeprecationInspectionBase extends LocalInspectionTool { else { PsiExpression qualifierExpression = call.getMethodExpression().getQualifierExpression(); qualifierText = qualifierExpression == null ? "" : qualifierExpression.getText() + "."; + + PsiType qualifierType = ExpressionUtils.getQualifierOrThis(call.getMethodExpression()).getType(); + PsiClass qualifierClass = PsiUtil.resolveClassInType(qualifierType); + if (qualifierClass == null) return false; + PsiClass suggestedClass = suggestedReplacement.getContainingClass(); + if (suggestedClass == null || !InheritanceUtil.isInheritorOrSelf(qualifierClass, suggestedClass, true)) return false; } PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(initial.getProject()); diff --git a/java/java-tests/testData/inspection/deprecation/quickFix/beforeMismatchQualifier.java b/java/java-tests/testData/inspection/deprecation/quickFix/beforeMismatchQualifier.java new file mode 100644 index 000000000000..9e6b26d0e643 --- /dev/null +++ b/java/java-tests/testData/inspection/deprecation/quickFix/beforeMismatchQualifier.java @@ -0,0 +1,21 @@ +// "Replace method call with Test2.mmm" "false" +class Test { + static void example() { + Test t = new Test(); + t.mmm(); + } + + /** + * {@link Test2#mmm()} + * + */ + @Deprecated + void mmm() { + } + +} + +class Test2 { + void mmm() { + } +}