diff --git a/platform/core-api/src/com/intellij/psi/SyntaxTraverser.java b/platform/core-api/src/com/intellij/psi/SyntaxTraverser.java index d802165510e8..55ebbcfa73fa 100644 --- a/platform/core-api/src/com/intellij/psi/SyntaxTraverser.java +++ b/platform/core-api/src/com/intellij/psi/SyntaxTraverser.java @@ -80,6 +80,35 @@ public abstract class SyntaxTraverser extends FilteredTraverser parents(@Nullable final T element) { + return new JBIterable() { + @Override + public Iterator iterator() { + return new Iterator() { + T cur = element; + + @Override + public boolean hasNext() { + return cur != null; + } + + @Override + public T next() { + T result = cur; + cur = parent(cur); + return result; + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + }; + } + }; + } + private abstract static class FirstNextTraverser extends SyntaxTraverser { public FirstNextTraverser(Meta meta) { @@ -161,7 +190,8 @@ public abstract class SyntaxTraverser extends FilteredTraverser