From 899a01e8c273d28e8c2b0424df721ed17a7b4434 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 21 Apr 2015 02:05:14 +0300 Subject: [PATCH] Rename sequence() extension to asSequence() --- libraries/stdlib/src/generated/_Sequences.kt | 213 ++++++++++++++---- .../stdlib/src/kotlin/collections/Sequence.kt | 10 +- .../stdlib/test/collections/CollectionTest.kt | 20 +- libraries/stdlib/test/collections/MapTest.kt | 2 +- .../collections/MutableCollectionsTest.kt | 4 +- .../test/collections/SequenceJVMTest.kt | 2 +- .../stdlib/test/collections/SequenceTest.kt | 4 +- .../stdlib/test/iterators/IteratorsJVMTest.kt | 2 +- .../stdlib/test/iterators/IteratorsTest.kt | 12 +- .../src/templates/Sequence.kt | 27 ++- 10 files changed, 216 insertions(+), 80 deletions(-) diff --git a/libraries/stdlib/src/generated/_Sequences.kt b/libraries/stdlib/src/generated/_Sequences.kt index 770c226a648..cc6aeb10df9 100644 --- a/libraries/stdlib/src/generated/_Sequences.kt +++ b/libraries/stdlib/src/generated/_Sequences.kt @@ -12,10 +12,10 @@ import java.util.Collections // TODO: it's temporary while we have java.util.Col /** * Returns a sequence from the given collection */ -public fun Array.sequence(): Sequence { +public fun Array.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -23,10 +23,10 @@ public fun Array.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun BooleanArray.sequence(): Sequence { +public fun BooleanArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -34,10 +34,10 @@ public fun BooleanArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun ByteArray.sequence(): Sequence { +public fun ByteArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -45,10 +45,10 @@ public fun ByteArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun CharArray.sequence(): Sequence { +public fun CharArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -56,10 +56,10 @@ public fun CharArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun DoubleArray.sequence(): Sequence { +public fun DoubleArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -67,10 +67,10 @@ public fun DoubleArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun FloatArray.sequence(): Sequence { +public fun FloatArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -78,10 +78,10 @@ public fun FloatArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun IntArray.sequence(): Sequence { +public fun IntArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -89,10 +89,10 @@ public fun IntArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun LongArray.sequence(): Sequence { +public fun LongArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -100,10 +100,10 @@ public fun LongArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun ShortArray.sequence(): Sequence { +public fun ShortArray.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -111,10 +111,10 @@ public fun ShortArray.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun Iterable.sequence(): Sequence { +public fun Iterable.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -122,10 +122,10 @@ public fun Iterable.sequence(): Sequence { /** * Returns a sequence from the given collection */ -public fun Map.sequence(): Sequence> { +public fun Map.asSequence(): Sequence> { return object : Sequence> { override fun iterator(): Iterator> { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -133,7 +133,7 @@ public fun Map.sequence(): Sequence> { /** * Returns a sequence from the given collection */ -public fun Sequence.sequence(): Sequence { +public fun Sequence.asSequence(): Sequence { return this } @@ -142,17 +142,17 @@ deprecated("Migrate to using Sequence and respective functions") /** * Returns a stream from the given collection */ -public fun Stream.stream(): Stream { +public fun Stream.asStream(): Stream { return this } /** * Returns a sequence from the given collection */ -public fun String.sequence(): Sequence { +public fun String.asSequence(): Sequence { return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } } @@ -160,9 +160,122 @@ public fun String.sequence(): Sequence { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") +public fun Array.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun BooleanArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun ByteArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun CharArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun DoubleArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun FloatArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun IntArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun LongArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun ShortArray.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun Iterable.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun Map.sequence(): Sequence> { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun Sequence.sequence(): Sequence { + return this +} + + +/** + * Returns a stream from the given collection + */ +deprecated("Use asStream() instead") +public fun Stream.stream(): Stream { + return this +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") +public fun String.sequence(): Sequence { + return asSequence() +} + +/** + * Returns a sequence from the given collection + */ +deprecated("Use asSequence() instead") public fun Array.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -173,9 +286,9 @@ public fun Array.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun BooleanArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -186,9 +299,9 @@ public fun BooleanArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun ByteArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -199,9 +312,9 @@ public fun ByteArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun CharArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -212,9 +325,9 @@ public fun CharArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun DoubleArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -225,9 +338,9 @@ public fun DoubleArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun FloatArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -238,9 +351,9 @@ public fun FloatArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun IntArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -251,9 +364,9 @@ public fun IntArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun LongArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -264,9 +377,9 @@ public fun LongArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun ShortArray.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -277,9 +390,9 @@ public fun ShortArray.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun Iterable.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -290,9 +403,9 @@ public fun Iterable.stream(): Stream { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun Map.stream(): Stream> { - val sequence = sequence() + val sequence = asSequence() return object : Stream> { override fun iterator(): Iterator> { return sequence.iterator() @@ -303,9 +416,9 @@ public fun Map.stream(): Stream> { /** * Returns a sequence from the given collection */ -deprecated("Use sequence() instead") +deprecated("Use asSequence() instead") public fun String.stream(): Stream { - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() diff --git a/libraries/stdlib/src/kotlin/collections/Sequence.kt b/libraries/stdlib/src/kotlin/collections/Sequence.kt index 15d80be6289..d79c215655c 100644 --- a/libraries/stdlib/src/kotlin/collections/Sequence.kt +++ b/libraries/stdlib/src/kotlin/collections/Sequence.kt @@ -33,17 +33,21 @@ public fun streamOf(progression: Progression): Stream = object : Strea /** * Creates a sequence that returns all values from this iterator. The sequence is constrained to be iterated only once. */ -public fun Iterator.sequence(): Sequence { +public fun Iterator.asSequence(): Sequence { val iteratorSequence = object : Sequence { - override fun iterator(): Iterator = this@sequence + override fun iterator(): Iterator = this@asSequence } return iteratorSequence.constrainOnce() } +deprecated("Use asSequence() instead.") +public fun Iterator.sequence(): Sequence = asSequence() + + /** * Creates a sequence that returns the specified values. */ -public fun sequenceOf(vararg elements: T): Sequence = elements.sequence() +public fun sequenceOf(vararg elements: T): Sequence = elements.asSequence() /** * Creates a sequence that returns all values in the specified [progression]. diff --git a/libraries/stdlib/test/collections/CollectionTest.kt b/libraries/stdlib/test/collections/CollectionTest.kt index 571c260f240..cc81d2b1cd8 100644 --- a/libraries/stdlib/test/collections/CollectionTest.kt +++ b/libraries/stdlib/test/collections/CollectionTest.kt @@ -376,8 +376,8 @@ class CollectionTest { expect(2000000000000, { listOf(3000000000000, 2000000000000).min() }) expect('a', { listOf('a', 'b').min() }) expect("a", { listOf("a", "b").min() }) - expect(null, { listOf().sequence().min() }) - expect(2, { listOf(2, 3).sequence().min() }) + expect(null, { listOf().asSequence().min() }) + expect(2, { listOf(2, 3).asSequence().min() }) } test fun max() { @@ -387,8 +387,8 @@ class CollectionTest { expect(3000000000000, { listOf(3000000000000, 2000000000000).max() }) expect('b', { listOf('a', 'b').max() }) expect("b", { listOf("a", "b").max() }) - expect(null, { listOf().sequence().max() }) - expect(3, { listOf(2, 3).sequence().max() }) + expect(null, { listOf().asSequence().max() }) + expect(3, { listOf(2, 3).asSequence().max() }) } test fun minBy() { @@ -397,8 +397,8 @@ class CollectionTest { expect(3, { listOf(2, 3).minBy { -it } }) expect('a', { listOf('a', 'b').minBy { "x$it" } }) expect("b", { listOf("b", "abc").minBy { it.length() } }) - expect(null, { listOf().sequence().minBy { it } }) - expect(3, { listOf(2, 3).sequence().minBy { -it } }) + expect(null, { listOf().asSequence().minBy { it } }) + expect(3, { listOf(2, 3).asSequence().minBy { -it } }) } test fun maxBy() { @@ -407,8 +407,8 @@ class CollectionTest { expect(2, { listOf(2, 3).maxBy { -it } }) expect('b', { listOf('a', 'b').maxBy { "x$it" } }) expect("abc", { listOf("b", "abc").maxBy { it.length() } }) - expect(null, { listOf().sequence().maxBy { it } }) - expect(2, { listOf(2, 3).sequence().maxBy { -it } }) + expect(null, { listOf().asSequence().maxBy { it } }) + expect(2, { listOf(2, 3).asSequence().maxBy { -it } }) } test fun minByEvaluateOnce() { @@ -416,7 +416,7 @@ class CollectionTest { expect(1, { listOf(5, 4, 3, 2, 1).minBy { c++; it * it } }) assertEquals(5, c) c = 0 - expect(1, { listOf(5, 4, 3, 2, 1).sequence().minBy { c++; it * it } }) + expect(1, { listOf(5, 4, 3, 2, 1).asSequence().minBy { c++; it * it } }) assertEquals(5, c) } @@ -425,7 +425,7 @@ class CollectionTest { expect(5, { listOf(5, 4, 3, 2, 1).maxBy { c++; it * it } }) assertEquals(5, c) c = 0 - expect(5, { listOf(5, 4, 3, 2, 1).sequence().maxBy { c++; it * it } }) + expect(5, { listOf(5, 4, 3, 2, 1).asSequence().maxBy { c++; it * it } }) assertEquals(5, c) } diff --git a/libraries/stdlib/test/collections/MapTest.kt b/libraries/stdlib/test/collections/MapTest.kt index 701fe1b7ad4..42449ab0122 100644 --- a/libraries/stdlib/test/collections/MapTest.kt +++ b/libraries/stdlib/test/collections/MapTest.kt @@ -68,7 +68,7 @@ class MapTest { test fun stream() { val map = mapOf("beverage" to "beer", "location" to "Mells", "name" to "James") - val named = map.sequence().filter { it.key == "name" }.single() + val named = map.asSequence().filter { it.key == "name" }.single() assertEquals("James", named.value) } diff --git a/libraries/stdlib/test/collections/MutableCollectionsTest.kt b/libraries/stdlib/test/collections/MutableCollectionsTest.kt index 943ce27a075..aa2a1460e4d 100644 --- a/libraries/stdlib/test/collections/MutableCollectionsTest.kt +++ b/libraries/stdlib/test/collections/MutableCollectionsTest.kt @@ -17,11 +17,11 @@ class MutableCollectionTest { assertEquals(data, collection) } - test fun fromStream() { + test fun fromSequence() { val list = listOf("foo", "bar") val collection = ArrayList() - collection.addAll(list.sequence()) + collection.addAll(list.asSequence()) assertEquals(list, collection) } diff --git a/libraries/stdlib/test/collections/SequenceJVMTest.kt b/libraries/stdlib/test/collections/SequenceJVMTest.kt index 51cf0adf925..0e691561bf2 100644 --- a/libraries/stdlib/test/collections/SequenceJVMTest.kt +++ b/libraries/stdlib/test/collections/SequenceJVMTest.kt @@ -6,7 +6,7 @@ import kotlin.test.assertEquals class SequenceJVMTest { test fun filterIsInstance() { - val src: Sequence = listOf(1, 2, 3.toDouble(), "abc", "cde").sequence() + val src: Sequence = listOf(1, 2, 3.toDouble(), "abc", "cde").asSequence() val intValues: Sequence = src.filterIsInstance() assertEquals(listOf(1, 2), intValues.toArrayList()) diff --git a/libraries/stdlib/test/collections/SequenceTest.kt b/libraries/stdlib/test/collections/SequenceTest.kt index 087c20661c3..eebcdfd8e4d 100644 --- a/libraries/stdlib/test/collections/SequenceTest.kt +++ b/libraries/stdlib/test/collections/SequenceTest.kt @@ -189,7 +189,7 @@ public class SequenceTest { test fun sequenceFromIterator() { val list = listOf(3, 2, 1, 0) val iterator = list.iterator() - val sequence = iterator.sequence() + val sequence = iterator.asSequence() assertEquals(list, sequence.toList()) fails { sequence.toList() @@ -233,7 +233,7 @@ public class SequenceTest { '5' // fibonacci(10) = 55 ) - assertEquals(expected, fibonacci().drop(4).flatMap { it.toString().sequence() }.take(10).toList()) + assertEquals(expected, fibonacci().drop(4).flatMap { it.toString().asSequence() }.take(10).toList()) } test fun flatMap() { diff --git a/libraries/stdlib/test/iterators/IteratorsJVMTest.kt b/libraries/stdlib/test/iterators/IteratorsJVMTest.kt index 447d620082a..186f13cd4b8 100644 --- a/libraries/stdlib/test/iterators/IteratorsJVMTest.kt +++ b/libraries/stdlib/test/iterators/IteratorsJVMTest.kt @@ -27,7 +27,7 @@ class IteratorsJVMTest { } test fun flatMapOnIterator() { - val result = sequenceOf(1, 2).flatMap { i -> (0..i).sequence()} + val result = sequenceOf(1, 2).flatMap { i -> (0..i).asSequence()} assertEquals(listOf(0, 1, 0, 1, 2), result.toList()) } } diff --git a/libraries/stdlib/test/iterators/IteratorsTest.kt b/libraries/stdlib/test/iterators/IteratorsTest.kt index e12e7408503..e68c3e67b74 100644 --- a/libraries/stdlib/test/iterators/IteratorsTest.kt +++ b/libraries/stdlib/test/iterators/IteratorsTest.kt @@ -39,7 +39,7 @@ class IteratorsTest { } test fun plus() { - val iter = arrayListOf("foo", "bar").sequence() + val iter = arrayListOf("foo", "bar").asSequence() val iter2 = iter + "cheese" assertEquals(arrayListOf("foo", "bar", "cheese"), iter2.toList()) @@ -52,12 +52,12 @@ class IteratorsTest { test fun plusCollection() { val a = arrayListOf("foo", "bar") val b = arrayListOf("cheese", "wine") - val iter = a.sequence() + b.sequence() + val iter = a.asSequence() + b.asSequence() assertEquals(arrayListOf("foo", "bar", "cheese", "wine"), iter.toList()) // lets use a mutable variable - var ml = arrayListOf("a").sequence() - ml += a.sequence() + var ml = arrayListOf("a").asSequence() + ml += a.asSequence() ml += "beer" ml += b ml += "z" @@ -65,11 +65,11 @@ class IteratorsTest { } test fun requireNoNulls() { - val iter = arrayListOf("foo", "bar").sequence() + val iter = arrayListOf("foo", "bar").asSequence() val notNull = iter.requireNoNulls() assertEquals(arrayListOf("foo", "bar"), notNull.toList()) - val iterWithNulls = arrayListOf("foo", null, "bar").sequence() + val iterWithNulls = arrayListOf("foo", null, "bar").asSequence() val notNull2 = iterWithNulls.requireNoNulls() fails { // should throw an exception as we have a null diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Sequence.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Sequence.kt index a2ed2caff78..3e912c28a9a 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Sequence.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Sequence.kt @@ -8,12 +8,12 @@ fun sequences(): List { templates add f("stream()") { include(Maps) exclude(Sequences) - deprecate { "Use sequence() instead" } + deprecate { "Use asSequence() instead" } doc { "Returns a sequence from the given collection" } returns("Stream") body { """ - val sequence = sequence() + val sequence = asSequence() return object : Stream { override fun iterator(): Iterator { return sequence.iterator() @@ -25,6 +25,24 @@ fun sequences(): List { } templates add f("sequence()") { + include(Maps) + exclude(Sequences) + deprecate { "Use asSequence() instead" } + doc { "Returns a sequence from the given collection" } + returns("Sequence") + body { + """ + return asSequence() + """ + } + + body(Sequences) { + """ + return this + """ + } + } + templates add f("asSequence()") { include(Maps) exclude(Sequences) doc { "Returns a sequence from the given collection" } @@ -33,7 +51,7 @@ fun sequences(): List { """ return object : Sequence { override fun iterator(): Iterator { - return this@sequence.iterator() + return this@asSequence.iterator() } } """ @@ -47,4 +65,5 @@ fun sequences(): List { } return templates -} \ No newline at end of file +} +