diff --git a/java/java-tests/testData/refactoring/renameLocal/RenameInPlaceQualifyFieldReferenceInChild.java b/java/java-tests/testData/refactoring/renameLocal/RenameInPlaceQualifyFieldReferenceInChild.java new file mode 100644 index 000000000000..902517f46eed --- /dev/null +++ b/java/java-tests/testData/refactoring/renameLocal/RenameInPlaceQualifyFieldReferenceInChild.java @@ -0,0 +1,10 @@ +interface F { + void foo(int i); +} + +class A implements F { + int myI; + public void foo(int i){ + myI = i; + } +} diff --git a/java/java-tests/testData/refactoring/renameLocal/RenameInPlaceQualifyFieldReferenceInChild_after.java b/java/java-tests/testData/refactoring/renameLocal/RenameInPlaceQualifyFieldReferenceInChild_after.java new file mode 100644 index 000000000000..633886e1a129 --- /dev/null +++ b/java/java-tests/testData/refactoring/renameLocal/RenameInPlaceQualifyFieldReferenceInChild_after.java @@ -0,0 +1,10 @@ +interface F { + void foo(int myI); +} + +class A implements F { + int myI; + public void foo(int myI){ + this.myI = myI; + } +} diff --git a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java index 8f8f368f3ff8..db393e868212 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/RenameLocalTest.java @@ -77,6 +77,10 @@ public class RenameLocalTest extends LightRefactoringTestCase { doTestInplaceRename("myI"); } + public void testRenameInPlaceQualifyFieldReferenceInChild() throws Exception { + doTestInplaceRename("myI"); + } + public void testRenameInPlaceThisNeeded() throws Exception { doTestInplaceRename("a"); } diff --git a/platform/lang-api/src/com/intellij/refactoring/listeners/RefactoringElementListener.java b/platform/lang-api/src/com/intellij/refactoring/listeners/RefactoringElementListener.java index 50609a408e90..4d44851fbeeb 100644 --- a/platform/lang-api/src/com/intellij/refactoring/listeners/RefactoringElementListener.java +++ b/platform/lang-api/src/com/intellij/refactoring/listeners/RefactoringElementListener.java @@ -24,6 +24,14 @@ import org.jetbrains.annotations.NotNull; * @author dsl */ public interface RefactoringElementListener { + RefactoringElementListener DEAF = new RefactoringElementListener() { + @Override + public void elementMoved(@NotNull PsiElement newElement) {} + + @Override + public void elementRenamed(@NotNull PsiElement newElement) {} + }; + /** * Invoked in write action and command. */ diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java index 748584de6c5c..76679b956237 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/inplace/VariableInplaceRenamer.java @@ -36,6 +36,7 @@ import com.intellij.psi.*; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.psi.util.PsiUtilCore; import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.listeners.RefactoringElementListener; import com.intellij.refactoring.rename.AutomaticRenamingDialog; import com.intellij.refactoring.rename.RenameHandlerRegistry; import com.intellij.refactoring.rename.RenameProcessor; @@ -240,7 +241,7 @@ public class VariableInplaceRenamer extends InplaceRefactoring { final String newElementName = renamer.getNewName(element); if (newElementName != null) { final Collection infos = classified.get(element); - RenameUtil.doRenameGenericNamedElement(element, newElementName, infos.toArray(new UsageInfo[infos.size()]), null); + RenameUtil.doRename(element, newElementName, infos.toArray(new UsageInfo[infos.size()]), myProject, RefactoringElementListener.DEAF); } } }