inplace introduce: do not replace identifier with method expr even when ref names equals (IDEA-97536)

This commit is contained in:
anna
2012-12-14 15:31:22 +01:00
parent 7af34f3d5d
commit b8c340ff6b
4 changed files with 28 additions and 1 deletions
@@ -139,7 +139,7 @@ public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntro
PsiExpression expression = refVariableElement instanceof PsiKeyword && refVariableElementParent instanceof PsiNewExpression
? (PsiNewExpression)refVariableElementParent
: PsiTreeUtil.getParentOfType(refVariableElement, PsiReferenceExpression.class);
if (expression instanceof PsiReferenceExpression) {
if (expression instanceof PsiReferenceExpression && !(expression.getParent() instanceof PsiMethodCallExpression)) {
final String referenceName = ((PsiReferenceExpression)expression).getReferenceName();
if (((PsiReferenceExpression)expression).resolve() == psiVariable ||
Comparing.strEqual(psiVariable.getName(), referenceName) ||
@@ -0,0 +1,10 @@
class A {
int f() {
return 0;
}
void m() {
f<caret>();
f();
}
}
@@ -0,0 +1,9 @@
class A {
int f() {
return 0;
}
void m(int f) {
f();
}
}
@@ -69,6 +69,14 @@ public class InplaceIntroduceParameterTest extends AbstractJavaInplaceIntroduceT
});
}
public void testParamNameEqMethodName() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {
@Override
public void pass(AbstractInplaceIntroducer inplaceIntroducePopup) {
}
});
}
@Override
protected String getBasePath() {
return BASE_PATH;