Extract method for assignment matching

This commit is contained in:
Alexey Sedunov
2013-04-12 18:36:02 +04:00
parent f473224e84
commit edea00f53e
@@ -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;