mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-235296 Refactor ensureCodeBlock: MakeCallChainIntoCallSequenceIntention updated
GitOrigin-RevId: e6c99b39100647404df6970d76c49f03cf0a0b1e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5f1fe98ff8
commit
1dea41a567
+6
-8
@@ -24,10 +24,7 @@ import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import com.siyeh.ig.psiutils.HighlightUtils;
|
||||
import com.siyeh.ig.psiutils.MethodCallUtils;
|
||||
import com.siyeh.ig.psiutils.VariableNameGenerator;
|
||||
import com.siyeh.ig.psiutils.*;
|
||||
import com.siyeh.ipp.base.Intention;
|
||||
import com.siyeh.ipp.base.PsiElementPredicate;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
@@ -53,10 +50,11 @@ public class MakeCallChainIntoCallSequenceIntention extends Intention {
|
||||
final List<String> callTexts = new ArrayList<>();
|
||||
PsiMethodCallExpression call = ObjectUtils.tryCast(element, PsiMethodCallExpression.class);
|
||||
if (call == null) return;
|
||||
call = RefactoringUtil.ensureCodeBlock(call);
|
||||
if (call == null) return;
|
||||
final PsiStatement appendStatement = ObjectUtils.tryCast(RefactoringUtil.getParentStatement(call, false), PsiStatement.class);
|
||||
if (appendStatement == null) return;
|
||||
CodeBlockSurrounder surrounder = CodeBlockSurrounder.forExpression(call);
|
||||
if (surrounder == null) return;
|
||||
CodeBlockSurrounder.SurroundResult result = surrounder.surround();
|
||||
call = (PsiMethodCallExpression)result.getExpression();
|
||||
final PsiStatement appendStatement = result.getAnchor();
|
||||
PsiExpression toReplace = call;
|
||||
PsiExpression root = MethodCallChainPredicate.getCallChainRoot(call);
|
||||
if (root == null) return;
|
||||
|
||||
+4
-17
@@ -18,6 +18,7 @@ package com.siyeh.ipp.concatenation;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.siyeh.ig.psiutils.CodeBlockSurrounder;
|
||||
import com.siyeh.ipp.base.PsiElementPredicate;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -29,23 +30,9 @@ class MethodCallChainPredicate implements PsiElementPredicate {
|
||||
return false;
|
||||
}
|
||||
final PsiElement parent = PsiUtil.skipParenthesizedExprUp(element.getParent());
|
||||
if (parent instanceof PsiExpressionStatement || parent instanceof PsiField || parent instanceof PsiReturnStatement
|
||||
|| parent instanceof PsiLambdaExpression || parent instanceof PsiBreakStatement) {
|
||||
return true;
|
||||
}
|
||||
if (parent instanceof PsiLocalVariable) {
|
||||
final PsiElement grandParent = parent.getParent();
|
||||
if (!(grandParent instanceof PsiDeclarationStatement)) {
|
||||
return false;
|
||||
}
|
||||
final PsiDeclarationStatement declarationStatement = (PsiDeclarationStatement)grandParent;
|
||||
return declarationStatement.getDeclaredElements().length == 1;
|
||||
}
|
||||
if (parent instanceof PsiAssignmentExpression) {
|
||||
final PsiElement grandParent = parent.getParent();
|
||||
return grandParent instanceof PsiExpressionStatement;
|
||||
}
|
||||
return false;
|
||||
return (parent instanceof PsiStatement || parent instanceof PsiVariable ||
|
||||
parent instanceof PsiAssignmentExpression || parent instanceof PsiLambdaExpression) &&
|
||||
(element instanceof PsiExpression && CodeBlockSurrounder.canSurround((PsiExpression)element));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@ class Test {
|
||||
if (b) {
|
||||
sb.append("foo");
|
||||
sb.append("bar");
|
||||
s = sb.toString();
|
||||
}<caret>
|
||||
s = sb<caret>.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user