mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
SSR: improve polyadic expression matching
This commit is contained in:
+7
-20
@@ -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
|
||||
|
||||
+1
-1
@@ -216,7 +216,7 @@ public class JavaCompilingVisitor extends JavaRecursiveElementWalkingVisitor {
|
||||
createAndSetSubstitutionHandlerFromReference(
|
||||
reference,
|
||||
resolve != null ? ((PsiClass)resolve).getQualifiedName() : reference.getText(),
|
||||
referenceParent instanceof PsiExpression
|
||||
referenceParent instanceof PsiReferenceExpression
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user