From a8cd39889db24fb0fb3bc8ba3dd239c282b67c2d Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Mon, 18 May 2015 22:51:22 +0300 Subject: [PATCH] handle null roots --- .../util/containers/TreeTraverser.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/platform/util/src/com/intellij/util/containers/TreeTraverser.java b/platform/util/src/com/intellij/util/containers/TreeTraverser.java index 9d1bb06db8d1..0dcd5b5bee6f 100644 --- a/platform/util/src/com/intellij/util/containers/TreeTraverser.java +++ b/platform/util/src/com/intellij/util/containers/TreeTraverser.java @@ -66,7 +66,7 @@ public abstract class TreeTraverser { * iteration is in progress or when the iterators generated by {@link #children} are advanced. */ @NotNull - public final JBIterable preOrderTraversal(@NotNull final T root) { + public final JBIterable preOrderTraversal(@Nullable final T root) { return new JBIterable() { @Override public Iterator iterator() { @@ -96,7 +96,7 @@ public abstract class TreeTraverser { * iteration is in progress or when the iterators generated by {@link #children} are advanced. */ @NotNull - public final JBIterable postOrderTraversal(@NotNull final T root) { + public final JBIterable postOrderTraversal(@Nullable final T root) { return new JBIterable() { @Override public Iterator iterator() { @@ -113,7 +113,7 @@ public abstract class TreeTraverser { * iteration is in progress or when the iterators generated by {@link #children} are advanced. */ @NotNull - public final JBIterable breadthFirstTraversal(@NotNull final T root) { + public final JBIterable breadthFirstTraversal(@Nullable final T root) { return new JBIterable() { @Override public Iterator iterator() { @@ -172,8 +172,10 @@ public abstract class TreeTraverser { int doneCount; - PreOrderIterator(@NotNull T root) { - stack.addLast(Pair.>create(null, new SingletonIterator(root))); + PreOrderIterator(@Nullable T root) { + if (root != null) { + stack.addLast(Pair.>create(null, new SingletonIterator(root))); + } } PreOrderIterator(@NotNull Iterable roots) { @@ -206,8 +208,10 @@ public abstract class TreeTraverser { private final class PostOrderIterator extends DfsIterator { - PostOrderIterator(T root) { - stack.addLast(Pair.create(root, children(root).iterator())); + PostOrderIterator(@Nullable T root) { + if (root != null) { + stack.addLast(Pair.create(root, children(root).iterator())); + } } @Override @@ -230,8 +234,10 @@ public abstract class TreeTraverser { private final class BreadthFirstIterator extends Itr { final Deque queue = new ArrayDeque(); - BreadthFirstIterator(@NotNull T root) { - queue.add(root); + BreadthFirstIterator(@Nullable T root) { + if (root != null) { + queue.add(root); + } } @Override