inplace introduce parameter: from field with the same name (IDEA-85750)

This commit is contained in:
Anna Kozlova
2012-05-14 19:51:53 +04:00
parent 2c371a6dcd
commit ccba3bf443
4 changed files with 42 additions and 4 deletions
@@ -125,10 +125,13 @@ public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntro
if (psiVariable == null || !psiVariable.isValid()) return null;
final PsiElement refVariableElement = containingFile.findElementAt(marker.getStartOffset());
PsiExpression expression = PsiTreeUtil.getParentOfType(refVariableElement, PsiReferenceExpression.class);
if (expression instanceof PsiReferenceExpression && (((PsiReferenceExpression)expression).resolve() == psiVariable ||
Comparing.strEqual(psiVariable.getName(),
((PsiReferenceExpression)expression).getReferenceName()))) {
return (PsiExpression)expression.replace(elementFactory.createExpressionFromText(exprText, psiVariable));
if (expression instanceof PsiReferenceExpression) {
final String referenceName = ((PsiReferenceExpression)expression).getReferenceName();
if (((PsiReferenceExpression)expression).resolve() == psiVariable ||
Comparing.strEqual(psiVariable.getName(), referenceName) ||
Comparing.strEqual(exprText, referenceName)) {
return (PsiExpression)expression.replace(elementFactory.createExpressionFromText(exprText, psiVariable));
}
}
if (expression == null) {
expression = PsiTreeUtil.getParentOfType(refVariableElement, PsiExpression.class);
@@ -0,0 +1,13 @@
public class ATest {
public static final String FOO = "foo";
public static final String FOO1 = "foo1";
String m_interval = "";
void foo() {
if (FOO.equals(<caret>m_interval.substring(1))) {
System.out.println(FOO);
} else if (FOO1.equals(m_interval.substring(1))) {
System.out.println();
}
}
}
@@ -0,0 +1,13 @@
public class ATest {
public static final String FOO = "foo";
public static final String FOO1 = "foo1";
String m_interval = "";
void foo(String m_interval1) {
if (FOO.equals(m_interval1.substring(1))) {
System.out.println(FOO);
} else if (FOO1.equals(m_interval1.substring(1))) {
System.out.println();
}
}
}
@@ -50,6 +50,15 @@ public class InplaceIntroduceParameterTest extends AbstractJavaInplaceIntroduceT
});
}
public void testReplaceAll2() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {
@Override
public void pass(AbstractInplaceIntroducer inplaceIntroduceFieldPopup) {
inplaceIntroduceFieldPopup.setReplaceAllOccurrences(true);
}
});
}
public void testReplaceAllMethodCalls() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {
@Override