diff --git a/java/java-psi-api/src/com/intellij/psi/JavaRecursiveElementVisitor.java b/java/java-psi-api/src/com/intellij/psi/JavaRecursiveElementVisitor.java index 1a18e7b48d53..424841e4b2dd 100644 --- a/java/java-psi-api/src/com/intellij/psi/JavaRecursiveElementVisitor.java +++ b/java/java-psi-api/src/com/intellij/psi/JavaRecursiveElementVisitor.java @@ -32,7 +32,6 @@ public abstract class JavaRecursiveElementVisitor extends JavaElementVisitor { // This stack thing is intended to prevent exponential child traversing due to visitReferenceExpression calls both visitRefElement // and visitExpression. private final Stack myRefExprsInVisit = new Stack(); - private final Stack myBinaryExpressions = new Stack(); @Override public void visitElement(PsiElement element) { @@ -40,24 +39,6 @@ public abstract class JavaRecursiveElementVisitor extends JavaElementVisitor { myRefExprsInVisit.pop(); myRefExprsInVisit.push(null); } - else if (element instanceof PsiBinaryExpression) { - //implement smart traversing to avoid stack overflow - if (!myBinaryExpressions.isEmpty() && myBinaryExpressions.peek() == element) { - return; - } - PsiElement child = element.getFirstChild(); - while (child != null) { - if (child instanceof PsiBinaryExpression) { - myBinaryExpressions.push((PsiBinaryExpression)child); - } - child.accept(this); - child = child.getNextSibling(); - if (child == null) { - child = myBinaryExpressions.isEmpty() ? null : myBinaryExpressions.pop(); - if (child != null) child = child.getFirstChild(); - } - } - } else { element.acceptChildren(this); } diff --git a/java/jsp-openapi/src/com/intellij/psi/jsp/JavaJspRecursiveElementVisitor.java b/java/jsp-openapi/src/com/intellij/psi/jsp/JavaJspRecursiveElementVisitor.java index eee5157847b4..1393ae18f0ea 100644 --- a/java/jsp-openapi/src/com/intellij/psi/jsp/JavaJspRecursiveElementVisitor.java +++ b/java/jsp-openapi/src/com/intellij/psi/jsp/JavaJspRecursiveElementVisitor.java @@ -15,9 +15,8 @@ */ package com.intellij.psi.jsp; -import com.intellij.psi.PsiReferenceExpression; -import com.intellij.psi.PsiBinaryExpression; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiReferenceExpression; import com.intellij.util.containers.Stack; /** @@ -27,7 +26,6 @@ public abstract class JavaJspRecursiveElementVisitor extends JavaJspElementVisit // This stack thing is intended to prevent exponential child traversing due to visitReferenceExpression calls both visitRefElement // and visitExpression. private final Stack myRefExprsInVisit = new Stack<>(); - private final Stack myBinaryExpressions = new Stack<>(); @Override public void visitElement(PsiElement element) { @@ -35,24 +33,6 @@ public abstract class JavaJspRecursiveElementVisitor extends JavaJspElementVisit myRefExprsInVisit.pop(); myRefExprsInVisit.push(null); } - else if (element instanceof PsiBinaryExpression) { - //implement smart traversing to avoid stack overflow - if (!myBinaryExpressions.isEmpty() && myBinaryExpressions.peek() == element) { - return; - } - PsiElement child = element.getFirstChild(); - while (child != null) { - if (child instanceof PsiBinaryExpression) { - myBinaryExpressions.push((PsiBinaryExpression)child); - } - child.accept(this); - child = child.getNextSibling(); - if (child == null) { - child = myBinaryExpressions.isEmpty() ? null : myBinaryExpressions.pop(); - if (child != null) child = child.getFirstChild(); - } - } - } else { element.acceptChildren(this); }