SSR: improve polyadic expression matching

This commit is contained in:
Bas Leijdekkers
2015-05-27 16:40:29 +02:00
parent 7b260d52fb
commit 042abe8ed5
3 changed files with 21 additions and 21 deletions
@@ -927,28 +927,15 @@ public class JavaMatchingVisitor extends JavaElementVisitor {
@Override
public void visitPolyadicExpression(PsiPolyadicExpression expression) {
PsiPolyadicExpression expr2 = (PsiPolyadicExpression)myMatchingVisitor.getElement();
final PsiPolyadicExpression expr2 = (PsiPolyadicExpression)myMatchingVisitor.getElement();
boolean result = expression.getOperationTokenType().equals(expr2.getOperationTokenType());
if (result) {
PsiExpression[] operands1 = expression.getOperands();
PsiExpression[] operands2 = expr2.getOperands();
if (operands1.length != operands2.length) {
result = false;
}
else {
for (int i = 0; i < operands1.length; i++) {
PsiExpression e1 = operands1[i];
PsiExpression e2 = operands2[i];
if (!myMatchingVisitor.match(e1, e2)) {
result = false;
break;
}
}
}
myMatchingVisitor.setResult(expression.getOperationTokenType().equals(expr2.getOperationTokenType()));
if (myMatchingVisitor.getResult()) {
final PsiExpression[] operands1 = expression.getOperands();
final PsiExpression[] operands2 = expr2.getOperands();
myMatchingVisitor.setResult(
myMatchingVisitor.matchSequentially(new ArrayBackedNodeIterator(operands1), new ArrayBackedNodeIterator(operands2)));
}
myMatchingVisitor.setResult(result);
}
@Override
@@ -216,7 +216,7 @@ public class JavaCompilingVisitor extends JavaRecursiveElementWalkingVisitor {
createAndSetSubstitutionHandlerFromReference(
reference,
resolve != null ? ((PsiClass)resolve).getQualifiedName() : reference.getText(),
referenceParent instanceof PsiExpression
referenceParent instanceof PsiReferenceExpression
);
}
}