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
@@ -63,7 +63,7 @@ public inline fun <T> Sequence<T>?.orEmpty(): Sequence<T> = this ?: emptySequenc
* @sample samples.collections.Sequences.Usage.sequenceIfEmpty
*/
@SinceKotlin("1.3")
public fun <T> Sequence<T>.ifEmpty(defaultValue: () -> Sequence<T>): Sequence<T> = buildSequence {
public fun <T> Sequence<T>.ifEmpty(defaultValue: () -> Sequence<T>): Sequence<T> = sequence {
val iterator = this@ifEmpty.iterator()
if (iterator.hasNext()) {
yieldAll(iterator)
@@ -588,7 +588,7 @@ public fun <T> Sequence<T>.constrainOnce(): Sequence<T> {
* The returned sequence is constrained to be iterated only once.
*
* @see constrainOnce
* @see kotlin.coroutines.experimental.buildSequence
* @see kotlin.sequences.sequence
*
* @sample samples.collections.Sequences.Building.generateSequence
*/
@@ -605,7 +605,7 @@ public fun <T : Any> generateSequence(nextFunction: () -> T?): Sequence<T> {
*
* The sequence can be iterated multiple times, each time starting with [seed].
*
* @see kotlin.coroutines.experimental.buildSequence
* @see kotlin.sequences.sequence
*
* @sample samples.collections.Sequences.Building.generateSequenceWithSeed
*/
@@ -625,7 +625,7 @@ public fun <T : Any> generateSequence(seed: T?, nextFunction: (T) -> T?): Sequen
*
* The sequence can be iterated multiple times.
*
* @see kotlin.coroutines.experimental.buildSequence
* @see kotlin.sequences.sequence
*
* @sample samples.collections.Sequences.Building.generateSequenceWithLazySeed
*/
@@ -23,7 +23,7 @@ internal fun <T> Sequence<T>.windowedSequence(size: Int, step: Int, partialWindo
internal fun <T> windowedIterator(iterator: Iterator<T>, size: Int, step: Int, partialWindows: Boolean, reuseBuffer: Boolean): Iterator<List<T>> {
if (!iterator.hasNext()) return EmptyIterator
return buildIterator<List<T>> {
return iterator<List<T>> {
val gap = step - size
if (gap >= 0) {
var buffer = ArrayList<T>(size)