inplace rename: check for rename element even if it is valid (reparse surprises)

This commit is contained in:
anna
2012-03-30 17:48:02 +02:00
parent d0f2335e34
commit eab9b22aab
5 changed files with 49 additions and 2 deletions
@@ -0,0 +1,15 @@
public class ResourceLocator {
private ContentContainsChecker myContentContainsChecker;
private DeltaI<caret>nfoGetter myDeltaInfoGetter;
private class ContentContainsChecker {
}
private class RevisionInfoContainsChecker {
}
private class DeltaInfoGetter {
}
}
@@ -0,0 +1,15 @@
public class ResourceLocator {
private ContentContainsChecker myContentContainsChecker;
private NEW_NAME myNEWNAME;
private class ContentContainsChecker {
}
private class RevisionInfoContainsChecker {
}
private class NEW_NAME {
}
}
@@ -34,6 +34,10 @@ public class RenameMembersInplaceTest extends LightCodeInsightTestCase {
return JavaTestUtil.getJavaTestDataPath();
}
public void testInnerClass() throws Exception {
doTestInplaceRename("NEW_NAME");
}
public void testConstructor() throws Exception {
doTestInplaceRename("Bar");
}
@@ -50,6 +50,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.TextRange;
@@ -407,7 +408,10 @@ public abstract class InplaceRefactoring {
@Nullable
protected PsiNamedElement getVariable() {
if (myElementToRename != null && myElementToRename.isValid()) return myElementToRename;
if (myElementToRename != null && myElementToRename.isValid()) {
if (Comparing.strEqual(myOldName, myElementToRename.getName())) return myElementToRename;
return PsiTreeUtil.getParentOfType(myElementToRename.getContainingFile().findElementAt(myRenameOffset.getStartOffset()), PsiNameIdentifierOwner.class);
}
final PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(myEditor.getDocument());
if (psiFile != null) {
return PsiTreeUtil.getParentOfType(psiFile.findElementAt(myRenameOffset.getStartOffset()), PsiNameIdentifierOwner.class);
@@ -24,6 +24,7 @@ import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.RangeMarker;
import com.intellij.openapi.editor.impl.EditorImpl;
import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
@@ -240,7 +241,15 @@ public class MemberInplaceRenamer extends VariableInplaceRenamer {
@Nullable
public PsiElement getSubstituted() {
if (mySubstituted != null && mySubstituted.isValid()) return mySubstituted;
if (mySubstituted != null && mySubstituted.isValid()){
if (mySubstituted instanceof PsiNameIdentifierOwner) {
if (Comparing.strEqual(myOldName, ((PsiNameIdentifierOwner)mySubstituted).getName())) return mySubstituted;
final RangeMarker rangeMarker = mySubstitutedRange != null ? mySubstitutedRange : myRenameOffset;
return PsiTreeUtil.getParentOfType(mySubstituted.getContainingFile().findElementAt(rangeMarker.getStartOffset()), PsiNameIdentifierOwner.class);
}
return mySubstituted;
}
if (mySubstitutedRange != null) {
final PsiFile psiFile = PsiDocumentManager.getInstance(myProject).getPsiFile(myEditor.getDocument());
if (psiFile != null) {