Provide the emptySequence() method.
sequenceOf() with no arguments is equivalent to emptySequence(). #KT-7233 Fixed
This commit is contained in:
@@ -53,7 +53,7 @@ public fun<T> Enumeration<T>.asSequence(): Sequence<T> = this.iterator().sequenc
|
||||
/**
|
||||
* Creates a sequence that returns the specified values.
|
||||
*/
|
||||
public fun <T> sequenceOf(vararg elements: T): Sequence<T> = elements.asSequence()
|
||||
public fun <T> sequenceOf(vararg elements: T): Sequence<T> = if (elements.isEmpty()) emptySequence() else elements.asSequence()
|
||||
|
||||
/**
|
||||
* Creates a sequence that returns all values in the specified [progression].
|
||||
@@ -62,6 +62,20 @@ public fun <T> sequenceOf(progression: Progression<T>): Sequence<T> = object : S
|
||||
override fun iterator(): Iterator<T> = progression.iterator()
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an empty sequence.
|
||||
*/
|
||||
public fun <T> emptySequence(): Sequence<T> = EmptySequence
|
||||
|
||||
private object EmptySequence : Sequence<Nothing> {
|
||||
override fun iterator(): Iterator<Nothing> = EmptySequenceIterator
|
||||
}
|
||||
|
||||
private object EmptySequenceIterator : Iterator<Nothing> {
|
||||
override fun next(): Nothing = throw NoSuchElementException("Sequence is empty.")
|
||||
override fun hasNext(): Boolean = false
|
||||
}
|
||||
|
||||
deprecated("Use FilteringSequence<T> instead")
|
||||
public class FilteringStream<T>(stream: Stream<T>, sendWhen: Boolean = true, predicate: (T) -> Boolean)
|
||||
: Stream<T> by FilteringSequence<T>(stream.toSequence(), sendWhen, predicate)
|
||||
|
||||
@@ -20,15 +20,16 @@ fun fibonacci(): Sequence<Int> {
|
||||
public class SequenceTest {
|
||||
|
||||
test fun filterEmptySequence() {
|
||||
val sequence = sequenceOf<String>()
|
||||
assertEquals(0, sequence.filter { false }.count())
|
||||
assertEquals(0, sequence.filter { true }.count())
|
||||
for (sequence in listOf(emptySequence<String>(), sequenceOf<String>())) {
|
||||
assertEquals(0, sequence.filter { false }.count())
|
||||
assertEquals(0, sequence.filter { true }.count())
|
||||
}
|
||||
}
|
||||
|
||||
test fun mapEmptySequence() {
|
||||
val sequence = sequenceOf<String>()
|
||||
assertEquals(0, sequence.map { false }.count())
|
||||
assertEquals(0, sequence.map { true }.count())
|
||||
for (sequence in listOf(emptySequence<String>(), sequenceOf<String>())) {
|
||||
assertEquals(0, sequence.map { true }.count())
|
||||
}
|
||||
}
|
||||
|
||||
test fun requireNoNulls() {
|
||||
|
||||
Reference in New Issue
Block a user