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.
|
* 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].
|
* 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()
|
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")
|
deprecated("Use FilteringSequence<T> instead")
|
||||||
public class FilteringStream<T>(stream: Stream<T>, sendWhen: Boolean = true, predicate: (T) -> Boolean)
|
public class FilteringStream<T>(stream: Stream<T>, sendWhen: Boolean = true, predicate: (T) -> Boolean)
|
||||||
: Stream<T> by FilteringSequence<T>(stream.toSequence(), sendWhen, predicate)
|
: Stream<T> by FilteringSequence<T>(stream.toSequence(), sendWhen, predicate)
|
||||||
|
|||||||
@@ -20,15 +20,16 @@ fun fibonacci(): Sequence<Int> {
|
|||||||
public class SequenceTest {
|
public class SequenceTest {
|
||||||
|
|
||||||
test fun filterEmptySequence() {
|
test fun filterEmptySequence() {
|
||||||
val sequence = sequenceOf<String>()
|
for (sequence in listOf(emptySequence<String>(), sequenceOf<String>())) {
|
||||||
assertEquals(0, sequence.filter { false }.count())
|
assertEquals(0, sequence.filter { false }.count())
|
||||||
assertEquals(0, sequence.filter { true }.count())
|
assertEquals(0, sequence.filter { true }.count())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
test fun mapEmptySequence() {
|
test fun mapEmptySequence() {
|
||||||
val sequence = sequenceOf<String>()
|
for (sequence in listOf(emptySequence<String>(), sequenceOf<String>())) {
|
||||||
assertEquals(0, sequence.map { false }.count())
|
assertEquals(0, sequence.map { true }.count())
|
||||||
assertEquals(0, sequence.map { true }.count())
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
test fun requireNoNulls() {
|
test fun requireNoNulls() {
|
||||||
|
|||||||
Reference in New Issue
Block a user