From 9da184052324107b97b55b1b774456e875e935fb Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 16 Aug 2016 20:09:46 +0300 Subject: [PATCH] Minor, rename ConsPStack$1 -> ConsPStack$Itr To somewhat improve stack traces (see http://stackoverflow.com/questions/34214290/kotlin-massive-amounts-of-conspstack-how-can-i-avoid/34214718#34214718) --- .../jvm/internal/pcollections/ConsPStack.java | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/pcollections/ConsPStack.java b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/pcollections/ConsPStack.java index 5d9f5883c18..5f57f340bc7 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/pcollections/ConsPStack.java +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/pcollections/ConsPStack.java @@ -67,27 +67,33 @@ final class ConsPStack implements Iterable { return size; } - private Iterator iterator(final int index) { - return new Iterator() { - ConsPStack next = subList(index); + private Iterator iterator(int index) { + return new Itr(subList(index)); + } - @Override - public boolean hasNext() { - return next.size > 0; - } + private static class Itr implements Iterator { + private ConsPStack next; - @Override - public E next() { - E e = next.first; - next = next.rest; - return e; - } + public Itr(ConsPStack first) { + this.next = first; + } - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; + @Override + public boolean hasNext() { + return next.size > 0; + } + + @Override + public E next() { + E e = next.first; + next = next.rest; + return e; + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } } public ConsPStack plus(E e) {