Extract method for assignment matching
This commit is contained in:
+8
-8
@@ -20,7 +20,6 @@ import com.google.common.base.Predicate;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import com.intellij.psi.PsiWhiteSpace;
|
import com.intellij.psi.PsiWhiteSpace;
|
||||||
import com.intellij.psi.tree.IElementType;
|
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
@@ -72,6 +71,10 @@ public class BranchedFoldingUtils {
|
|||||||
return (JetReturnExpression)JetPsiUtil.getOutermostLastBlockElement(branch, CHECK_RETURN);
|
return (JetReturnExpression)JetPsiUtil.getOutermostLastBlockElement(branch, CHECK_RETURN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean checkAssignmentsMatch(JetBinaryExpression a1, JetBinaryExpression a2) {
|
||||||
|
return checkEquivalence(a1.getLeft(), a2.getLeft()) && a1.getOperationToken().equals(a2.getOperationToken());
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean checkFoldableIfExpressionWithAssignments(JetIfExpression ifExpression) {
|
private static boolean checkFoldableIfExpressionWithAssignments(JetIfExpression ifExpression) {
|
||||||
JetExpression thenBranch = ifExpression.getThen();
|
JetExpression thenBranch = ifExpression.getThen();
|
||||||
JetExpression elseBranch = ifExpression.getElse();
|
JetExpression elseBranch = ifExpression.getElse();
|
||||||
@@ -81,8 +84,7 @@ public class BranchedFoldingUtils {
|
|||||||
|
|
||||||
if (thenAssignment == null || elseAssignment == null) return false;
|
if (thenAssignment == null || elseAssignment == null) return false;
|
||||||
|
|
||||||
return checkEquivalence(thenAssignment.getLeft(), elseAssignment.getLeft()) &&
|
return checkAssignmentsMatch(thenAssignment, elseAssignment);
|
||||||
thenAssignment.getOperationToken().equals(elseAssignment.getOperationToken());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean checkFoldableWhenExpressionWithAssignments(JetWhenExpression whenExpression) {
|
private static boolean checkFoldableWhenExpressionWithAssignments(JetWhenExpression whenExpression) {
|
||||||
@@ -105,11 +107,9 @@ public class BranchedFoldingUtils {
|
|||||||
|
|
||||||
assert !assignments.isEmpty();
|
assert !assignments.isEmpty();
|
||||||
|
|
||||||
JetExpression lhs = assignments.get(0).getLeft();
|
JetBinaryExpression firstAssignment = assignments.get(0);
|
||||||
IElementType opToken = assignments.get(0).getOperationToken();
|
for (JetBinaryExpression assignment : assignments) {
|
||||||
for (int i = 1; i < assignments.size(); i++) {
|
if (!checkAssignmentsMatch(assignment, firstAssignment)) return false;
|
||||||
if (!checkEquivalence(lhs, assignments.get(i).getLeft())) return false;
|
|
||||||
if (!opToken.equals(assignments.get(i).getOperationToken())) return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user