From f0d2784af47d857d5a3ec3f21db378be6e85adf9 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Tue, 9 Jun 2015 22:41:46 +0300 Subject: [PATCH] parents(node) iterable --- .../src/com/intellij/psi/SyntaxTraverser.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) 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