mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
introduce: process chained method calls during same occurrences processing (IDEA-124349)
This commit is contained in:
+4
-2
@@ -153,7 +153,7 @@ public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntro
|
||||
if (expression == null) {
|
||||
expression = PsiTreeUtil.getParentOfType(refVariableElement, PsiExpression.class);
|
||||
}
|
||||
while (expression instanceof PsiReferenceExpression) {
|
||||
while (expression instanceof PsiReferenceExpression || expression instanceof PsiMethodCallExpression) {
|
||||
final PsiElement parent = expression.getParent();
|
||||
if (parent instanceof PsiMethodCallExpression) {
|
||||
if (parent.getText().equals(exprText)) return (PsiExpression)parent;
|
||||
@@ -163,8 +163,10 @@ public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntro
|
||||
if (expression.getText().equals(exprText)) {
|
||||
return expression;
|
||||
}
|
||||
} else {
|
||||
} else if (expression instanceof PsiReferenceExpression) {
|
||||
return null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (expression != null && expression.isValid() && expression.getText().equals(exprText)) {
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
class Test {
|
||||
|
||||
private void test() {
|
||||
TestSubject subject = new TestSubject();
|
||||
boolean flag = false;
|
||||
|
||||
if (subject.getSubject2().get<caret>Val() != flag) {
|
||||
System.out.println(subject.getSubject2().getVal());
|
||||
}
|
||||
}
|
||||
|
||||
public static class TestSubject {
|
||||
public TestSubject2 getSubject2() {
|
||||
return new TestSubject2();
|
||||
}
|
||||
}
|
||||
|
||||
public static class TestSubject2 {
|
||||
public boolean getVal() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
class Test {
|
||||
|
||||
private void test(boolean val) {
|
||||
TestSubject subject = new TestSubject();
|
||||
boolean flag = false;
|
||||
|
||||
if (val != flag) {
|
||||
System.out.println(val);
|
||||
}
|
||||
}
|
||||
|
||||
public static class TestSubject {
|
||||
public TestSubject2 getSubject2() {
|
||||
return new TestSubject2();
|
||||
}
|
||||
}
|
||||
|
||||
public static class TestSubject2 {
|
||||
public boolean getVal() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,6 +41,16 @@ public class InplaceIntroduceParameterTest extends AbstractJavaInplaceIntroduceT
|
||||
});
|
||||
}
|
||||
|
||||
public void testChainMethodCall() throws Exception {
|
||||
doTest(new Pass<AbstractInplaceIntroducer>() {
|
||||
@Override
|
||||
public void pass(AbstractInplaceIntroducer inplaceIntroduceFieldPopup) {
|
||||
inplaceIntroduceFieldPopup.setReplaceAllOccurrences(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void testReplaceAll1() throws Exception {
|
||||
doTest(new Pass<AbstractInplaceIntroducer>() {
|
||||
@Override
|
||||
|
||||
+4
-2
@@ -96,7 +96,7 @@ public abstract class GrAbstractInplaceIntroducer<Settings extends GrIntroduceSe
|
||||
if (expression == null) {
|
||||
expression = PsiTreeUtil.getParentOfType(refVariableElement, GrExpression.class);
|
||||
}
|
||||
while (expression instanceof GrReferenceExpression) {
|
||||
while (expression instanceof GrReferenceExpression || expression instanceof GrCall) {
|
||||
final PsiElement parent = expression.getParent();
|
||||
if (parent instanceof GrMethodCallExpression) {
|
||||
if (parent.getText().equals(exprText)) return (GrExpression)parent;
|
||||
@@ -107,8 +107,10 @@ public abstract class GrAbstractInplaceIntroducer<Settings extends GrIntroduceSe
|
||||
return expression;
|
||||
}
|
||||
}
|
||||
else {
|
||||
else if (expression instanceof GrReferenceExpression){
|
||||
return null;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (expression != null && expression.isValid() && expression.getText().equals(exprText)) {
|
||||
|
||||
Reference in New Issue
Block a user