Deprecate sequence implementations in favor of sequence operations.
This commit is contained in:
@@ -579,7 +579,7 @@ public fun <T : Any> Iterable<T?>.filterNotNull(): List<T> {
|
|||||||
* Returns a sequence containing all elements that are not null
|
* Returns a sequence containing all elements that are not null
|
||||||
*/
|
*/
|
||||||
public fun <T : Any> Sequence<T?>.filterNotNull(): Sequence<T> {
|
public fun <T : Any> Sequence<T?>.filterNotNull(): Sequence<T> {
|
||||||
return FilteringSequence(this, false, { it == null }) as Sequence<T>
|
return filterNot { it == null } as Sequence<T>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -588,7 +588,7 @@ deprecated("Migrate to using Sequence<T> and respective functions")
|
|||||||
* Returns a stream containing all elements that are not null
|
* Returns a stream containing all elements that are not null
|
||||||
*/
|
*/
|
||||||
public fun <T : Any> Stream<T?>.filterNotNull(): Stream<T> {
|
public fun <T : Any> Stream<T?>.filterNotNull(): Stream<T> {
|
||||||
return FilteringStream(this, false, { it == null }) as Stream<T>
|
return filterNot { it == null } as Stream<T>
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -705,7 +705,7 @@ public fun <T> Iterable<T>.plus(collection: Iterable<T>): List<T> {
|
|||||||
* Returns a sequence containing all elements of original sequence and then all elements of the given [collection]
|
* Returns a sequence containing all elements of original sequence and then all elements of the given [collection]
|
||||||
*/
|
*/
|
||||||
public fun <T> Sequence<T>.plus(collection: Iterable<T>): Sequence<T> {
|
public fun <T> Sequence<T>.plus(collection: Iterable<T>): Sequence<T> {
|
||||||
return MultiSequence(sequenceOf(this, collection.sequence()))
|
return sequenceOf(this, collection.sequence()).flatten()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -714,7 +714,7 @@ deprecated("Migrate to using Sequence<T> and respective functions")
|
|||||||
* Returns a stream containing all elements of original stream and then all elements of the given [collection]
|
* Returns a stream containing all elements of original stream and then all elements of the given [collection]
|
||||||
*/
|
*/
|
||||||
public fun <T> Stream<T>.plus(collection: Iterable<T>): Stream<T> {
|
public fun <T> Stream<T>.plus(collection: Iterable<T>): Stream<T> {
|
||||||
return Multistream(streamOf(this, collection.stream()))
|
return streamOf(this, collection.stream()).flatten()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -811,7 +811,7 @@ public fun <T> Iterable<T>.plus(element: T): List<T> {
|
|||||||
* Returns a sequence containing all elements of original sequence and then the given element
|
* Returns a sequence containing all elements of original sequence and then the given element
|
||||||
*/
|
*/
|
||||||
public fun <T> Sequence<T>.plus(element: T): Sequence<T> {
|
public fun <T> Sequence<T>.plus(element: T): Sequence<T> {
|
||||||
return MultiSequence(sequenceOf(this, sequenceOf(element)))
|
return sequenceOf(this, sequenceOf(element)).flatten()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -820,14 +820,14 @@ deprecated("Migrate to using Sequence<T> and respective functions")
|
|||||||
* Returns a stream containing all elements of original stream and then the given element
|
* Returns a stream containing all elements of original stream and then the given element
|
||||||
*/
|
*/
|
||||||
public fun <T> Stream<T>.plus(element: T): Stream<T> {
|
public fun <T> Stream<T>.plus(element: T): Stream<T> {
|
||||||
return Multistream(streamOf(this, streamOf(element)))
|
return streamOf(this, streamOf(element)).flatten()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a sequence containing all elements of original sequence and then all elements of the given [sequence]
|
* Returns a sequence containing all elements of original sequence and then all elements of the given [sequence]
|
||||||
*/
|
*/
|
||||||
public fun <T> Sequence<T>.plus(sequence: Sequence<T>): Sequence<T> {
|
public fun <T> Sequence<T>.plus(sequence: Sequence<T>): Sequence<T> {
|
||||||
return MultiSequence(sequenceOf(this, sequence))
|
return sequenceOf(this, sequence).flatten()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -836,7 +836,7 @@ deprecated("Migrate to using Sequence<T> and respective functions")
|
|||||||
* Returns a stream containing all elements of original stream and then all elements of the given [stream]
|
* Returns a stream containing all elements of original stream and then all elements of the given [stream]
|
||||||
*/
|
*/
|
||||||
public fun <T> Stream<T>.plus(stream: Stream<T>): Stream<T> {
|
public fun <T> Stream<T>.plus(stream: Stream<T>): Stream<T> {
|
||||||
return Multistream(streamOf(this, stream))
|
return streamOf(this, stream).flatten()
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -49,12 +49,7 @@ public fun <T : Any> List<T?>.requireNoNulls(): List<T> {
|
|||||||
* Returns an original collection containing all the non-*null* elements, throwing an [[IllegalArgumentException]] if there are any null elements
|
* Returns an original collection containing all the non-*null* elements, throwing an [[IllegalArgumentException]] if there are any null elements
|
||||||
*/
|
*/
|
||||||
public fun <T : Any> Sequence<T?>.requireNoNulls(): Sequence<T> {
|
public fun <T : Any> Sequence<T?>.requireNoNulls(): Sequence<T> {
|
||||||
return FilteringSequence(this) {
|
return map { it ?: throw IllegalArgumentException("null element found in $this") }
|
||||||
if (it == null) {
|
|
||||||
throw IllegalArgumentException("null element found in $this")
|
|
||||||
}
|
|
||||||
true
|
|
||||||
} as Sequence<T>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -63,11 +58,6 @@ deprecated("Migrate to using Sequence<T> and respective functions")
|
|||||||
* Returns an original collection containing all the non-*null* elements, throwing an [[IllegalArgumentException]] if there are any null elements
|
* Returns an original collection containing all the non-*null* elements, throwing an [[IllegalArgumentException]] if there are any null elements
|
||||||
*/
|
*/
|
||||||
public fun <T : Any> Stream<T?>.requireNoNulls(): Stream<T> {
|
public fun <T : Any> Stream<T?>.requireNoNulls(): Stream<T> {
|
||||||
return FilteringStream(this) {
|
return map { it ?: throw IllegalArgumentException("null element found in $this") }
|
||||||
if (it == null) {
|
|
||||||
throw IllegalArgumentException("null element found in $this")
|
|
||||||
}
|
|
||||||
true
|
|
||||||
} as Stream<T>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -471,7 +471,7 @@ public inline fun <reified R> Iterable<*>.filterIsInstance(): List<R> {
|
|||||||
* Returns a sequence containing all elements that are instances of specified type parameter R
|
* Returns a sequence containing all elements that are instances of specified type parameter R
|
||||||
*/
|
*/
|
||||||
public inline fun <reified R> Sequence<*>.filterIsInstance(): Sequence<R> {
|
public inline fun <reified R> Sequence<*>.filterIsInstance(): Sequence<R> {
|
||||||
return FilteringSequence(this, true, { it is R }) as Sequence<R>
|
return filter { it is R } as Sequence<R>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -480,7 +480,7 @@ deprecated("Migrate to using Sequence<T> and respective functions")
|
|||||||
* Returns a stream containing all elements that are instances of specified type parameter R
|
* Returns a stream containing all elements that are instances of specified type parameter R
|
||||||
*/
|
*/
|
||||||
public inline fun <reified R> Stream<*>.filterIsInstance(): Stream<R> {
|
public inline fun <reified R> Stream<*>.filterIsInstance(): Stream<R> {
|
||||||
return FilteringStream(this, true, { it is R }) as Stream<R>
|
return filter { it is R } as Stream<R>
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -501,7 +501,7 @@ public fun <R> Iterable<*>.filterIsInstance(klass: Class<R>): List<R> {
|
|||||||
* Returns a sequence containing all elements that are instances of specified class
|
* Returns a sequence containing all elements that are instances of specified class
|
||||||
*/
|
*/
|
||||||
public fun <R> Sequence<*>.filterIsInstance(klass: Class<R>): Sequence<R> {
|
public fun <R> Sequence<*>.filterIsInstance(klass: Class<R>): Sequence<R> {
|
||||||
return FilteringSequence(this, true, { klass.isInstance(it) }) as Sequence<R>
|
return filter { klass.isInstance(it) } as Sequence<R>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -510,7 +510,7 @@ deprecated("Migrate to using Sequence<T> and respective functions")
|
|||||||
* Returns a stream containing all elements that are instances of specified class
|
* Returns a stream containing all elements that are instances of specified class
|
||||||
*/
|
*/
|
||||||
public fun <R> Stream<*>.filterIsInstance(klass: Class<R>): Stream<R> {
|
public fun <R> Stream<*>.filterIsInstance(klass: Class<R>): Stream<R> {
|
||||||
return FilteringStream(this, true, { klass.isInstance(it) }) as Stream<R>
|
return filter { klass.isInstance(it) } as Stream<R>
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public fun <T> Iterable<Iterable<T>>.flatten(): List<T> {
|
|||||||
* Returns a sequence of all elements from all sequences in this sequence.
|
* Returns a sequence of all elements from all sequences in this sequence.
|
||||||
*/
|
*/
|
||||||
public fun <T> Sequence<Sequence<T>>.flatten(): Sequence<T> {
|
public fun <T> Sequence<Sequence<T>>.flatten(): Sequence<T> {
|
||||||
return FlatteningSequence(this, { it })
|
return MultiSequence(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ public class FilteringStream<T>(stream: Stream<T>, sendWhen: Boolean = true, pre
|
|||||||
* @param sendWhen If `true`, values for which the predicate returns `true` are returned. Otherwise,
|
* @param sendWhen If `true`, values for which the predicate returns `true` are returned. Otherwise,
|
||||||
* values for which the predicate returns `false` are returned
|
* values for which the predicate returns `false` are returned
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.filter() or sequence.filterNot() instead.")
|
||||||
public class FilteringSequence<T>(private val sequence: Sequence<T>,
|
public class FilteringSequence<T>(private val sequence: Sequence<T>,
|
||||||
private val sendWhen: Boolean = true,
|
private val sendWhen: Boolean = true,
|
||||||
private val predicate: (T) -> Boolean
|
private val predicate: (T) -> Boolean
|
||||||
@@ -112,6 +113,7 @@ public class TransformingStream<T, R>(stream: Stream<T>, transformer: (T) -> R)
|
|||||||
* A sequence which returns the results of applying the given [transformer] function to the values
|
* A sequence which returns the results of applying the given [transformer] function to the values
|
||||||
* in the underlying [sequence].
|
* in the underlying [sequence].
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.map() instead.")
|
||||||
public class TransformingSequence<T, R>(private val sequence: Sequence<T>, private val transformer: (T) -> R) : Sequence<R> {
|
public class TransformingSequence<T, R>(private val sequence: Sequence<T>, private val transformer: (T) -> R) : Sequence<R> {
|
||||||
override fun iterator(): Iterator<R> = object : Iterator<R> {
|
override fun iterator(): Iterator<R> = object : Iterator<R> {
|
||||||
val iterator = sequence.iterator()
|
val iterator = sequence.iterator()
|
||||||
@@ -134,6 +136,7 @@ public class TransformingIndexedStream<T, R>(stream: Stream<T>, transformer: (In
|
|||||||
* in the underlying [sequence], where the transformer function takes the index of the value in the underlying
|
* in the underlying [sequence], where the transformer function takes the index of the value in the underlying
|
||||||
* sequence along with the value itself.
|
* sequence along with the value itself.
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.mapIndexed() instead.")
|
||||||
public class TransformingIndexedSequence<T, R>(private val sequence: Sequence<T>, private val transformer: (Int, T) -> R) : Sequence<R> {
|
public class TransformingIndexedSequence<T, R>(private val sequence: Sequence<T>, private val transformer: (Int, T) -> R) : Sequence<R> {
|
||||||
override fun iterator(): Iterator<R> = object : Iterator<R> {
|
override fun iterator(): Iterator<R> = object : Iterator<R> {
|
||||||
val iterator = sequence.iterator()
|
val iterator = sequence.iterator()
|
||||||
@@ -156,6 +159,7 @@ public class IndexingStream<T>(stream: Stream<T>)
|
|||||||
* A sequence which combines values from the underlying [sequence] with their indices and returns them as
|
* A sequence which combines values from the underlying [sequence] with their indices and returns them as
|
||||||
* [IndexedValue] objects.
|
* [IndexedValue] objects.
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.withIndex() instead.")
|
||||||
public class IndexingSequence<T>(private val sequence: Sequence<T>) : Sequence<IndexedValue<T>> {
|
public class IndexingSequence<T>(private val sequence: Sequence<T>) : Sequence<IndexedValue<T>> {
|
||||||
override fun iterator(): Iterator<IndexedValue<T>> = object : Iterator<IndexedValue<T>> {
|
override fun iterator(): Iterator<IndexedValue<T>> = object : Iterator<IndexedValue<T>> {
|
||||||
val iterator = sequence.iterator()
|
val iterator = sequence.iterator()
|
||||||
@@ -179,6 +183,7 @@ public class MergingStream<T1, T2, V>(stream1: Stream<T1>, stream2: Stream<T2>,
|
|||||||
* [transform] function and returns the values returned by that function. The sequence stops returning
|
* [transform] function and returns the values returned by that function. The sequence stops returning
|
||||||
* values as soon as one of the underlying sequences stops returning values.
|
* values as soon as one of the underlying sequences stops returning values.
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.merge() instead.")
|
||||||
public class MergingSequence<T1, T2, V>(private val sequence1: Sequence<T1>,
|
public class MergingSequence<T1, T2, V>(private val sequence1: Sequence<T1>,
|
||||||
private val sequence2: Sequence<T2>,
|
private val sequence2: Sequence<T2>,
|
||||||
private val transform: (T1, T2) -> V
|
private val transform: (T1, T2) -> V
|
||||||
@@ -200,6 +205,7 @@ deprecated("Use FlatteningSequence<T> instead")
|
|||||||
public class FlatteningStream<T, R>(stream: Stream<T>, transformer: (T) -> Stream<R>)
|
public class FlatteningStream<T, R>(stream: Stream<T>, transformer: (T) -> Stream<R>)
|
||||||
: Stream<R> by FlatteningSequence(stream.toSequence(), { transformer(it).toSequence() })
|
: Stream<R> by FlatteningSequence(stream.toSequence(), { transformer(it).toSequence() })
|
||||||
|
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.flatMap() instead.")
|
||||||
public class FlatteningSequence<T, R>(private val sequence: Sequence<T>,
|
public class FlatteningSequence<T, R>(private val sequence: Sequence<T>,
|
||||||
private val transformer: (T) -> Sequence<R>
|
private val transformer: (T) -> Sequence<R>
|
||||||
) : Sequence<R> {
|
) : Sequence<R> {
|
||||||
@@ -242,6 +248,7 @@ deprecated("Use MultiSequence<T> instead")
|
|||||||
public class Multistream<T>(stream: Stream<Stream<T>>)
|
public class Multistream<T>(stream: Stream<Stream<T>>)
|
||||||
: Stream<T> by FlatteningSequence(stream.toSequence(), { it.toSequence() })
|
: Stream<T> by FlatteningSequence(stream.toSequence(), { it.toSequence() })
|
||||||
|
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.flatten() instead.")
|
||||||
public class MultiSequence<T>(private val sequence: Sequence<Sequence<T>>) : Sequence<T> {
|
public class MultiSequence<T>(private val sequence: Sequence<Sequence<T>>) : Sequence<T> {
|
||||||
override fun iterator(): Iterator<T> = object : Iterator<T> {
|
override fun iterator(): Iterator<T> = object : Iterator<T> {
|
||||||
val iterator = sequence.iterator()
|
val iterator = sequence.iterator()
|
||||||
@@ -286,6 +293,7 @@ public class TakeStream<T>(stream: Stream<T>, count: Int)
|
|||||||
* A sequence that returns at most [count] values from the underlying [sequence], and stops returning values
|
* A sequence that returns at most [count] values from the underlying [sequence], and stops returning values
|
||||||
* as soon as that count is reached.
|
* as soon as that count is reached.
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.take() instead.")
|
||||||
public class TakeSequence<T>(private val sequence: Sequence<T>,
|
public class TakeSequence<T>(private val sequence: Sequence<T>,
|
||||||
private val count: Int
|
private val count: Int
|
||||||
) : Sequence<T> {
|
) : Sequence<T> {
|
||||||
@@ -317,6 +325,7 @@ public class TakeWhileStream<T>(stream: Stream<T>, predicate: (T) -> Boolean) :
|
|||||||
* A sequence that returns values from the underlying [sequence] while the [predicate] function returns
|
* A sequence that returns values from the underlying [sequence] while the [predicate] function returns
|
||||||
* `true`, and stops returning values once the function returns `false` for the next element.
|
* `true`, and stops returning values once the function returns `false` for the next element.
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.takeWhile() instead.")
|
||||||
public class TakeWhileSequence<T>(private val sequence: Sequence<T>,
|
public class TakeWhileSequence<T>(private val sequence: Sequence<T>,
|
||||||
private val predicate: (T) -> Boolean
|
private val predicate: (T) -> Boolean
|
||||||
) : Sequence<T> {
|
) : Sequence<T> {
|
||||||
@@ -366,6 +375,7 @@ public class DropStream<T>(stream: Stream<T>, count: Int)
|
|||||||
* A sequence that skips the specified number of values from the underlying [sequence] and returns
|
* A sequence that skips the specified number of values from the underlying [sequence] and returns
|
||||||
* all values after that.
|
* all values after that.
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.drop() instead.")
|
||||||
public class DropSequence<T>(private val sequence: Sequence<T>,
|
public class DropSequence<T>(private val sequence: Sequence<T>,
|
||||||
private val count: Int
|
private val count: Int
|
||||||
) : Sequence<T> {
|
) : Sequence<T> {
|
||||||
@@ -404,6 +414,7 @@ public class DropWhileStream<T>(stream: Stream<T>, predicate: (T) -> Boolean) :
|
|||||||
* A sequence that skips the values from the underlying [sequence] while the given [predicate] returns `true` and returns
|
* A sequence that skips the values from the underlying [sequence] while the given [predicate] returns `true` and returns
|
||||||
* all values after that.
|
* all values after that.
|
||||||
*/
|
*/
|
||||||
|
deprecated("This class is an implementation detail and shall be made internal soon. Use sequence.dropWhile() instead.")
|
||||||
public class DropWhileSequence<T>(private val sequence: Sequence<T>,
|
public class DropWhileSequence<T>(private val sequence: Sequence<T>,
|
||||||
private val predicate: (T) -> Boolean
|
private val predicate: (T) -> Boolean
|
||||||
) : Sequence<T> {
|
) : Sequence<T> {
|
||||||
@@ -450,7 +461,7 @@ public class DropWhileSequence<T>(private val sequence: Sequence<T>,
|
|||||||
* A sequence which repeatedly calls the specified [producer] function and returns its return values, until
|
* A sequence which repeatedly calls the specified [producer] function and returns its return values, until
|
||||||
* `null` is returned from [producer].
|
* `null` is returned from [producer].
|
||||||
*/
|
*/
|
||||||
deprecated("Implementation detail. Use function sequence(nextFunction: () -> T?) instead.")
|
deprecated("This class is an implementation detail and shall be made internal soon. Use function sequence(nextFunction: () -> T?) instead.")
|
||||||
public class FunctionSequence<T : Any>(private val producer: () -> T?) : Sequence<T> {
|
public class FunctionSequence<T : Any>(private val producer: () -> T?) : Sequence<T> {
|
||||||
override fun iterator(): Iterator<T> = object : Iterator<T> {
|
override fun iterator(): Iterator<T> = object : Iterator<T> {
|
||||||
var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue
|
var nextState: Int = -1 // -1 for unknown, 0 for done, 1 for continue
|
||||||
|
|||||||
@@ -351,7 +351,7 @@ fun filtering(): List<GenericFunction> {
|
|||||||
returns(Sequences) { "Sequence<T>" }
|
returns(Sequences) { "Sequence<T>" }
|
||||||
body(Sequences) {
|
body(Sequences) {
|
||||||
"""
|
"""
|
||||||
return FilteringSequence(this, false, { it == null }) as Sequence<T>
|
return filterNot { it == null } as Sequence<T>
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ fun generators(): List<GenericFunction> {
|
|||||||
returns(Sequences) { "Sequence<T>" }
|
returns(Sequences) { "Sequence<T>" }
|
||||||
body(Sequences) {
|
body(Sequences) {
|
||||||
"""
|
"""
|
||||||
return MultiSequence(sequenceOf(this, sequenceOf(element)))
|
return sequenceOf(this, sequenceOf(element)).flatten()
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -58,7 +58,7 @@ fun generators(): List<GenericFunction> {
|
|||||||
returns("Sequence<T>")
|
returns("Sequence<T>")
|
||||||
body {
|
body {
|
||||||
"""
|
"""
|
||||||
return MultiSequence(sequenceOf(this, collection.sequence()))
|
return sequenceOf(this, collection.sequence()).flatten()
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,7 +69,7 @@ fun generators(): List<GenericFunction> {
|
|||||||
returns("Sequence<T>")
|
returns("Sequence<T>")
|
||||||
body {
|
body {
|
||||||
"""
|
"""
|
||||||
return MultiSequence(sequenceOf(this, sequence))
|
return sequenceOf(this, sequence).flatten()
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,12 +27,7 @@ fun guards(): List<GenericFunction> {
|
|||||||
}
|
}
|
||||||
body(Sequences) {
|
body(Sequences) {
|
||||||
"""
|
"""
|
||||||
return FilteringSequence(this) {
|
return map { it ?: throw IllegalArgumentException("null element found in $THIS") }
|
||||||
if (it == null) {
|
|
||||||
throw IllegalArgumentException("null element found in $THIS")
|
|
||||||
}
|
|
||||||
true
|
|
||||||
} as Sequence<T>
|
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ fun specialJVM(): List<GenericFunction> {
|
|||||||
returns(Sequences) { "Sequence<R>" }
|
returns(Sequences) { "Sequence<R>" }
|
||||||
body(Sequences) {
|
body(Sequences) {
|
||||||
"""
|
"""
|
||||||
return FilteringSequence(this, true, { klass.isInstance(it) }) as Sequence<R>
|
return filter { klass.isInstance(it) } as Sequence<R>
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ fun specialJVM(): List<GenericFunction> {
|
|||||||
receiverAsterisk(true)
|
receiverAsterisk(true)
|
||||||
body(Sequences) {
|
body(Sequences) {
|
||||||
"""
|
"""
|
||||||
return FilteringSequence(this, true, { it is R }) as Sequence<R>
|
return filter { it is R } as Sequence<R>
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user