From fbd1279cc950071744ce3da9dd0e1024a49fc00d Mon Sep 17 00:00:00 2001 From: James Strachan Date: Fri, 30 Mar 2012 10:24:27 +0100 Subject: [PATCH] removed Iterator.toString() as it changes the iterator state, the default is fine and folks should be explicit about iterating over an iterator. Also disabled the default limit on the iterator on join(); if folks want to limit the join they should be explicit --- .../src/generated/ArraysFromJavaCollections.kt | 9 ++++++++- .../stdlib/src/generated/ArraysFromJavaIterables.kt | 2 +- .../src/generated/ArraysFromJavaIterablesLazy.kt | 4 ++-- .../JavaUtilIterablesFromJavaCollections.kt | 9 ++++++++- .../generated/JavaUtilIteratorsFromJavaIterables.kt | 2 +- .../src/generated/StandardFromJavaCollections.kt | 9 ++++++++- .../src/generated/StandardFromJavaIterables.kt | 2 +- .../src/generated/StandardFromJavaIterablesLazy.kt | 4 ++-- libraries/stdlib/src/kotlin/Iterators.kt | 13 +++---------- libraries/stdlib/src/kotlin/JavaCollections.kt | 7 +++++++ libraries/stdlib/src/kotlin/JavaIterablesLazy.kt | 2 +- libraries/stdlib/test/iterators/IteratorsTest.kt | 6 +++--- 12 files changed, 45 insertions(+), 24 deletions(-) diff --git a/libraries/stdlib/src/generated/ArraysFromJavaCollections.kt b/libraries/stdlib/src/generated/ArraysFromJavaCollections.kt index 73164eda710..5d72ce73c9f 100644 --- a/libraries/stdlib/src/generated/ArraysFromJavaCollections.kt +++ b/libraries/stdlib/src/generated/ArraysFromJavaCollections.kt @@ -1,8 +1,15 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaCollections.kt +// NOTE this file is auto-generated from src/kotlin/JavaCollections.kt package kotlin import java.util.* +// +// This file contains methods which are optimised for working on Collection / Array collections where the size +// could be used to implement a more optimal solution +// +// See [[GenerateStandardLib.kt]] for more details +// + /** * Returns a new List containing the results of applying the given function to each element in this collection * diff --git a/libraries/stdlib/src/generated/ArraysFromJavaIterables.kt b/libraries/stdlib/src/generated/ArraysFromJavaIterables.kt index 2101835b937..40cfd14f442 100644 --- a/libraries/stdlib/src/generated/ArraysFromJavaIterables.kt +++ b/libraries/stdlib/src/generated/ArraysFromJavaIterables.kt @@ -1,4 +1,4 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaIterables.kt +// NOTE this file is auto-generated from src/kotlin/JavaIterables.kt package kotlin import kotlin.util.* diff --git a/libraries/stdlib/src/generated/ArraysFromJavaIterablesLazy.kt b/libraries/stdlib/src/generated/ArraysFromJavaIterablesLazy.kt index 93beef96ced..63b3fefa7fd 100644 --- a/libraries/stdlib/src/generated/ArraysFromJavaIterablesLazy.kt +++ b/libraries/stdlib/src/generated/ArraysFromJavaIterablesLazy.kt @@ -1,4 +1,4 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaIterablesLazy.kt +// NOTE this file is auto-generated from src/kotlin/JavaIterablesLazy.kt package kotlin import kotlin.util.* @@ -67,7 +67,7 @@ inline fun Array.takeWhile(predicate: (T) -> Boolean): List = takeWhil * * @includeFunction ../../test/CollectionTest.kt join */ -inline fun Array.join(separator: String, prefix: String = "", postfix: String = "") : String { +inline fun Array.join(separator: String = ", ", prefix: String = "", postfix: String = "") : String { val buffer = StringBuilder(prefix) var first = true for (element in this) { diff --git a/libraries/stdlib/src/generated/JavaUtilIterablesFromJavaCollections.kt b/libraries/stdlib/src/generated/JavaUtilIterablesFromJavaCollections.kt index 3b7340d86fe..0ab7e3e1d8e 100644 --- a/libraries/stdlib/src/generated/JavaUtilIterablesFromJavaCollections.kt +++ b/libraries/stdlib/src/generated/JavaUtilIterablesFromJavaCollections.kt @@ -1,8 +1,15 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaCollections.kt +// NOTE this file is auto-generated from src/kotlin/JavaCollections.kt package kotlin import java.util.* +// +// This file contains methods which are optimised for working on Collection / Array collections where the size +// could be used to implement a more optimal solution +// +// See [[GenerateStandardLib.kt]] for more details +// + /** * Returns a new List containing the results of applying the given function to each element in this collection * diff --git a/libraries/stdlib/src/generated/JavaUtilIteratorsFromJavaIterables.kt b/libraries/stdlib/src/generated/JavaUtilIteratorsFromJavaIterables.kt index 59cadc718e9..8500b4eb6b3 100644 --- a/libraries/stdlib/src/generated/JavaUtilIteratorsFromJavaIterables.kt +++ b/libraries/stdlib/src/generated/JavaUtilIteratorsFromJavaIterables.kt @@ -1,4 +1,4 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaIterables.kt +// NOTE this file is auto-generated from src/kotlin/JavaIterables.kt package kotlin import java.util.* diff --git a/libraries/stdlib/src/generated/StandardFromJavaCollections.kt b/libraries/stdlib/src/generated/StandardFromJavaCollections.kt index 9a223d47b6d..685fe9ffc2b 100644 --- a/libraries/stdlib/src/generated/StandardFromJavaCollections.kt +++ b/libraries/stdlib/src/generated/StandardFromJavaCollections.kt @@ -1,8 +1,15 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaCollections.kt +// NOTE this file is auto-generated from src/kotlin/JavaCollections.kt package kotlin import java.util.* +// +// This file contains methods which are optimised for working on Collection / Array collections where the size +// could be used to implement a more optimal solution +// +// See [[GenerateStandardLib.kt]] for more details +// + /** * Returns a new List containing the results of applying the given function to each element in this collection * diff --git a/libraries/stdlib/src/generated/StandardFromJavaIterables.kt b/libraries/stdlib/src/generated/StandardFromJavaIterables.kt index 7c8461d1bcc..9202070b625 100644 --- a/libraries/stdlib/src/generated/StandardFromJavaIterables.kt +++ b/libraries/stdlib/src/generated/StandardFromJavaIterables.kt @@ -1,4 +1,4 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaIterables.kt +// NOTE this file is auto-generated from src/kotlin/JavaIterables.kt package kotlin import kotlin.util.* diff --git a/libraries/stdlib/src/generated/StandardFromJavaIterablesLazy.kt b/libraries/stdlib/src/generated/StandardFromJavaIterablesLazy.kt index 5313030e060..37f635e52bb 100644 --- a/libraries/stdlib/src/generated/StandardFromJavaIterablesLazy.kt +++ b/libraries/stdlib/src/generated/StandardFromJavaIterablesLazy.kt @@ -1,4 +1,4 @@ -// NOTE this file is auto-generated from stdlib/src/kotlin/JavaIterablesLazy.kt +// NOTE this file is auto-generated from src/kotlin/JavaIterablesLazy.kt package kotlin import kotlin.util.* @@ -67,7 +67,7 @@ inline fun Iterable.takeWhile(predicate: (T) -> Boolean): List = takeW * * @includeFunction ../../test/CollectionTest.kt join */ -inline fun Iterable.join(separator: String, prefix: String = "", postfix: String = "") : String { +inline fun Iterable.join(separator: String = ", ", prefix: String = "", postfix: String = "") : String { val buffer = StringBuilder(prefix) var first = true for (element in this) { diff --git a/libraries/stdlib/src/kotlin/Iterators.kt b/libraries/stdlib/src/kotlin/Iterators.kt index 9074972a0f8..18ba2bcc719 100644 --- a/libraries/stdlib/src/kotlin/Iterators.kt +++ b/libraries/stdlib/src/kotlin/Iterators.kt @@ -129,20 +129,13 @@ private class TakeWhileIterator(val iterator: java.util.Iterator, val pred * * @includeFunction ../../test/iterators/IteratorsTest.kt joinConcatenatesTheFirstNElementsAboveAThreshold */ -inline fun java.util.Iterator.join(separator: String, prefix: String = "", postfix: String = "", limit: Int = 20) : String { +inline fun java.util.Iterator.join(separator: String = ", ", prefix: String = "", postfix: String = "", limit: Int? = null) : String { val buffer = StringBuilder(prefix) var first = true; var count = 0 for (element in this) { if (first) first = false else buffer.append(separator) - if (++count <= limit) buffer.append(element) else break + if (limit == null || ++count <= limit) buffer.append(element) else break } - if (count > limit) buffer.append("...") + if (limit != null && count > limit) buffer.append("...") return buffer.append(postfix).toString().sure() } - -/** - * Returns a comma-separated representation of no more than the first 10 elements - * - * @includeFunction ../../test/iterators/IteratorsTest.kt toStringJoinsNoMoreThanTheFirstTenElements - */ -inline fun java.util.Iterator.toString(): String = join(separator = ", ", limit = 10) diff --git a/libraries/stdlib/src/kotlin/JavaCollections.kt b/libraries/stdlib/src/kotlin/JavaCollections.kt index bea1097e106..8f31dd5c165 100644 --- a/libraries/stdlib/src/kotlin/JavaCollections.kt +++ b/libraries/stdlib/src/kotlin/JavaCollections.kt @@ -2,6 +2,13 @@ package kotlin import java.util.* +// +// This file contains methods which are optimised for working on Collection / Array collections where the size +// could be used to implement a more optimal solution +// +// See [[GenerateStandardLib.kt]] for more details +// + /** * Returns a new List containing the results of applying the given function to each element in this collection * diff --git a/libraries/stdlib/src/kotlin/JavaIterablesLazy.kt b/libraries/stdlib/src/kotlin/JavaIterablesLazy.kt index 6c467a09d79..a2019d2cd92 100644 --- a/libraries/stdlib/src/kotlin/JavaIterablesLazy.kt +++ b/libraries/stdlib/src/kotlin/JavaIterablesLazy.kt @@ -64,7 +64,7 @@ inline fun java.lang.Iterable.takeWhile(predicate: (T) -> Boolean): List< * * @includeFunction ../../test/CollectionTest.kt join */ -inline fun java.lang.Iterable.join(separator: String, prefix: String = "", postfix: String = "") : String { +inline fun java.lang.Iterable.join(separator: String = ", ", prefix: String = "", postfix: String = "") : String { val buffer = StringBuilder(prefix) var first = true for (element in this) { diff --git a/libraries/stdlib/test/iterators/IteratorsTest.kt b/libraries/stdlib/test/iterators/IteratorsTest.kt index caf00e89626..810b96fdf4a 100644 --- a/libraries/stdlib/test/iterators/IteratorsTest.kt +++ b/libraries/stdlib/test/iterators/IteratorsTest.kt @@ -52,8 +52,8 @@ class IteratorsTest { } Test fun toStringJoinsNoMoreThanTheFirstTenElements() { - assertEquals("0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...", fibonacci().toString()) - assertEquals("13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ...", fibonacci().filter { it > 10 }.toString()) - assertEquals("144, 233, 377, 610, 987", fibonacci().filter { it > 100 }.takeWhile { it < 1000 }.toString()) + assertEquals("0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...", fibonacci().join(limit = 10)) + assertEquals("13, 21, 34, 55, 89, 144, 233, 377, 610, 987, ...", fibonacci().filter { it > 10 }.join(limit = 10)) + assertEquals("144, 233, 377, 610, 987", fibonacci().filter { it > 100 }.takeWhile { it < 1000 }.join()) } }