From 1449ccff22949c917406097144d64e9b885b1e55 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 31 Mar 2016 18:15:07 +0200 Subject: [PATCH] inplace -> dialog: accept second call as same element if there was local variable with same name as introduced field (IDEA-153747) --- .../AbstractInplaceIntroduceFieldPopup.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/java/java-impl/src/com/intellij/refactoring/introduceField/AbstractInplaceIntroduceFieldPopup.java b/java/java-impl/src/com/intellij/refactoring/introduceField/AbstractInplaceIntroduceFieldPopup.java index 548eb3c038c2..61abe0a11c86 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceField/AbstractInplaceIntroduceFieldPopup.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceField/AbstractInplaceIntroduceFieldPopup.java @@ -23,6 +23,7 @@ import com.intellij.psi.*; import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.SearchScope; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.introduceParameter.AbstractJavaInplaceIntroducer; import com.intellij.refactoring.ui.TypeSelectorManagerImpl; import com.intellij.refactoring.util.occurrences.OccurrenceManager; @@ -81,6 +82,14 @@ public abstract class AbstractInplaceIntroduceFieldPopup extends AbstractJavaInp return new LocalSearchScope(myParentClass); } + @Override + protected boolean startsOnTheSameElement(RefactoringActionHandler handler, PsiElement element) { + return super.startsOnTheSameElement(handler, element) || + myParentClass != null && + element instanceof PsiLocalVariable && + myParentClass.findFieldByName(((PsiLocalVariable)element).getName(), false) != null; + } + protected PsiElement getAnchorElement() { if (myAnchorIdx != -1 && myOccurrences[myAnchorIdx] != null) { return myOccurrences[myAnchorIdx].getParent();