Rename sequence and iterator builder functions and their scope class

This introduces new functions instead of the existing sequence builders:
- `sequence` instead of `buildSequence`
- `iterator` instead of `buildIterator`
- `SequenceScope` instead of `SequenceBuilder`

The old functions were deprecated with error and made inline-only, and `SequenceBuilder` has been
made a deprecated typealias to `SequenceScope`.

Move sequence builders to `SequencesKt` facade class.

Replace sequence builder usages in stdlib and samples.

#KT-26678
This commit is contained in:
Ilya Gorbunov
2018-09-07 07:15:21 +03:00
parent 9c812c6e2b
commit aac96c476a
9 changed files with 56 additions and 46 deletions
@@ -10,7 +10,7 @@ import kotlin.test.*
class SequenceBuilderTest {
@Test
fun testSimple() {
val result = buildSequence {
val result = sequence {
for (i in 1..3) {
yield(2 * i)
}
@@ -23,7 +23,7 @@ class SequenceBuilderTest {
@Test
fun testCallHasNextSeveralTimes() {
val result = buildSequence {
val result = sequence {
yield(1)
}
@@ -44,7 +44,7 @@ class SequenceBuilderTest {
@Test
fun testManualIteration() {
val result = buildSequence {
val result = sequence {
yield(1)
yield(2)
yield(3)
@@ -72,7 +72,7 @@ class SequenceBuilderTest {
@Test
fun testEmptySequence() {
val result = buildSequence<Int> {}
val result = sequence<Int> {}
val iterator = result.iterator()
assertFalse(iterator.hasNext())
@@ -84,10 +84,10 @@ class SequenceBuilderTest {
@Test
fun testLaziness() {
var sharedVar = -2
val result = buildSequence {
val result = sequence {
while (true) {
when (sharedVar) {
-1 -> return@buildSequence
-1 -> return@sequence
-2 -> error("Invalid state: -2")
else -> yield(sharedVar)
}
@@ -116,10 +116,10 @@ class SequenceBuilderTest {
@Test
fun testExceptionInCoroutine() {
var sharedVar = -2
val result = buildSequence {
val result = sequence {
while (true) {
when (sharedVar) {
-1 -> return@buildSequence
-1 -> return@sequence
-2 -> throw UnsupportedOperationException("-2 is unsupported")
else -> yield(sharedVar)
}
@@ -140,7 +140,7 @@ class SequenceBuilderTest {
@Test
fun testParallelIteration() {
var inc = 0
val result = buildSequence {
val result = sequence {
for (i in 1..3) {
inc++
yield(inc * i)
@@ -152,7 +152,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllIterator() {
val result = buildSequence {
val result = sequence {
yieldAll(listOf(1, 2, 3).iterator())
}
assertEquals(listOf(1, 2, 3), result.toList())
@@ -160,7 +160,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllSequence() {
val result = buildSequence {
val result = sequence {
yieldAll(sequenceOf(1, 2, 3))
}
assertEquals(listOf(1, 2, 3), result.toList())
@@ -168,7 +168,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllCollection() {
val result = buildSequence {
val result = sequence {
yieldAll(listOf(1, 2, 3))
}
assertEquals(listOf(1, 2, 3), result.toList())
@@ -176,7 +176,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllCollectionMixedFirst() {
val result = buildSequence {
val result = sequence {
yield(0)
yieldAll(listOf(1, 2, 3))
}
@@ -185,7 +185,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllCollectionMixedLast() {
val result = buildSequence {
val result = sequence {
yieldAll(listOf(1, 2, 3))
yield(4)
}
@@ -194,7 +194,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllCollectionMixedBoth() {
val result = buildSequence {
val result = sequence {
yield(0)
yieldAll(listOf(1, 2, 3))
yield(4)
@@ -204,7 +204,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllCollectionMixedLong() {
val result = buildSequence {
val result = sequence {
yield(0)
yieldAll(listOf(1, 2, 3))
yield(4)
@@ -219,7 +219,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllCollectionOneEmpty() {
val result = buildSequence<Int> {
val result = sequence<Int> {
yieldAll(listOf())
}
assertEquals(listOf(), result.toList())
@@ -227,7 +227,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllCollectionManyEmpty() {
val result = buildSequence<Int> {
val result = sequence<Int> {
yieldAll(listOf())
yieldAll(listOf())
yieldAll(listOf())
@@ -238,7 +238,7 @@ class SequenceBuilderTest {
@Test
fun testYieldAllSideEffects() {
val effects = arrayListOf<Any>()
val result = buildSequence {
val result = sequence {
effects.add("a")
yieldAll(listOf(1, 2))
effects.add("b")
@@ -276,7 +276,7 @@ class SequenceBuilderTest {
@Test
fun testInfiniteYieldAll() {
val values = buildIterator {
val values = iterator {
while (true) {
yieldAll((1..5).map { it })
}