Implement CharSequence.chars()
Change-Id: I8ed8283d0604147fc6d6e45eb330578503b58654
diff --git a/user/super/com/google/gwt/emul/java/lang/CharSequence.java b/user/super/com/google/gwt/emul/java/lang/CharSequence.java
index 4286821..302b0c3 100644
--- a/user/super/com/google/gwt/emul/java/lang/CharSequence.java
+++ b/user/super/com/google/gwt/emul/java/lang/CharSequence.java
@@ -15,6 +15,14 @@
*/
package java.lang;
+import static javaemul.internal.InternalPreconditions.checkElement;
+
+import java.util.PrimitiveIterator;
+import java.util.Spliterator;
+import java.util.Spliterators;
+import java.util.stream.IntStream;
+import java.util.stream.StreamSupport;
+
import javaemul.internal.JsUtils;
import jsinterop.annotations.JsMethod;
@@ -32,6 +40,26 @@
@Override
String toString();
+ default IntStream chars() {
+ return StreamSupport.intStream(() -> {
+ PrimitiveIterator.OfInt it = new PrimitiveIterator.OfInt() {
+ int cursor;
+
+ @Override
+ public int nextInt() {
+ checkElement(hasNext());
+ return charAt(cursor++);
+ }
+
+ @Override
+ public boolean hasNext() {
+ return cursor < length();
+ }
+ };
+ return Spliterators.spliterator(it, length(), Spliterator.ORDERED);
+ }, Spliterator.SIZED | Spliterator.SUBSIZED | Spliterator.ORDERED, false);
+ }
+
// CHECKSTYLE_OFF: Utility methods.
@JsMethod
static boolean $isInstance(Object instance) {