From 66fbbd680066cba6db9ddd9e577a5506d9567cbf Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 10 Feb 2010 13:08:33 +0300 Subject: [PATCH] non recursive visitors --- .../intellij/psi/util/IsConstantExpressionVisitor.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/java/openapi/src/com/intellij/psi/util/IsConstantExpressionVisitor.java b/java/openapi/src/com/intellij/psi/util/IsConstantExpressionVisitor.java index 99845a3146..0d8ba082d6 100644 --- a/java/openapi/src/com/intellij/psi/util/IsConstantExpressionVisitor.java +++ b/java/openapi/src/com/intellij/psi/util/IsConstantExpressionVisitor.java @@ -83,12 +83,19 @@ public class IsConstantExpressionVisitor extends JavaElementVisitor { } @Override public void visitBinaryExpression(PsiBinaryExpression expression) { - // check right operand first since it tends to be shorter - PsiExpression rOperand = expression.getROperand(); - if (rOperand != null){ + while (true) { + // check right operand first since it tends to be shorter + PsiExpression rOperand = expression.getROperand(); + if (rOperand == null) return; rOperand.accept(this); if (!myIsConstant) return; - expression.getLOperand().accept(this); + + PsiExpression lOperand = expression.getLOperand(); + if (!(lOperand instanceof PsiBinaryExpression)) { + lOperand.accept(this); + break; + } + expression = (PsiBinaryExpression)lOperand; } } -- 2.11.4.GIT