diff --git a/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaMethodProcessor.java index 8619c0c3f2ca..bc5c159987e2 100644 --- a/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/rename/RenameJavaMethodProcessor.java @@ -131,7 +131,7 @@ public class RenameJavaMethodProcessor extends RenameJavaMemberProcessor { private static void fixNameCollisionsWithInnerClassMethod(final PsiElement element, final String newName, final Set methodAndOverriders, final Set containingClasses, final boolean isStatic) throws IncorrectOperationException { - if (!(element instanceof PsiReferenceExpression)) return; + if (!(element instanceof PsiReferenceExpression) || ((PsiReferenceExpression)element).getQualifierExpression() != null) return; PsiElement elem = ((PsiReferenceExpression)element).resolve(); if (elem instanceof PsiMethod) { diff --git a/java/java-tests/testData/refactoring/renameCollisions/RenameConflictNoQualification.java b/java/java-tests/testData/refactoring/renameCollisions/RenameConflictNoQualification.java new file mode 100644 index 000000000000..3b653249435b --- /dev/null +++ b/java/java-tests/testData/refactoring/renameCollisions/RenameConflictNoQualification.java @@ -0,0 +1,19 @@ +interface A { + default void m() {} + default void f() { + m(); + } +} + +class Client1 implements A { + Client2 a; + @Override + public void m() { + a.m(); + } +} + +class Client2 implements A { + @Override + public void f() { } +} diff --git a/java/java-tests/testData/refactoring/renameCollisions/RenameConflictNoQualification.java.after b/java/java-tests/testData/refactoring/renameCollisions/RenameConflictNoQualification.java.after new file mode 100644 index 000000000000..0ac7630eec4b --- /dev/null +++ b/java/java-tests/testData/refactoring/renameCollisions/RenameConflictNoQualification.java.after @@ -0,0 +1,19 @@ +interface A { + default void f() {} + default void f() { + f(); + } +} + +class Client1 implements A { + Client2 a; + @Override + public void f() { + a.f(); + } +} + +class Client2 implements A { + @Override + public void f() { } +} diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/RenameCollisionsTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/RenameCollisionsTest.java index 4c72f118660b..3f5656959e4b 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/RenameCollisionsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/RenameCollisionsTest.java @@ -162,6 +162,9 @@ public class RenameCollisionsTest extends LightRefactoringTestCase { public void testRenameVarParamToOuterConst() { doTest("STATIC_FIELD"); } + public void testRenameConflictNoQualification() { + BaseRefactoringProcessor.ConflictsInTestsException.withIgnoredConflicts(() -> doTest("f")); + } public void testRenameLocalVariableHidesFieldInAnonymous() { try {