Provide lineSequence() extension method instead of BufferedReader.lines() in order not to conflict with JDK8 instance method with the same name.

This commit is contained in:
Ilya Gorbunov
2015-06-01 17:28:02 +03:00
parent dee26957d1
commit 13c89b7ae9
2 changed files with 12 additions and 9 deletions
+7 -4
View File
@@ -235,7 +235,7 @@ public fun Reader.forEachLine(block: (String) -> Unit): Unit = useLines { it.for
* @return the value returned by [block].
*/
public inline fun <T> Reader.useLines(block: (Sequence<String>) -> T): T =
buffered().use { block(it.lines()) }
buffered().use { block(it.lineSequence()) }
/**
* Returns a sequence of corresponding file lines.
@@ -248,10 +248,13 @@ public inline fun <T> Reader.useLines(block: (Sequence<String>) -> T): T =
*
* @return a sequence of corresponding file lines. The sequence returned can be iterated only once.
*/
public fun BufferedReader.lines(): Sequence<String> = LinesSequence(this).constrainOnce()
public fun BufferedReader.lineSequence(): Sequence<String> = LinesSequence(this).constrainOnce()
deprecated("Use lines() function which returns Sequence<String>")
public fun BufferedReader.lineIterator(): Iterator<String> = lines().iterator()
deprecated("Use lineSequence() instead to avoid conflict with JDK8 lines() method.", ReplaceWith("lineSequence()"))
public fun BufferedReader.lines(): Sequence<String> = lineSequence()
deprecated("Use lineSequence() function which returns Sequence<String>")
public fun BufferedReader.lineIterator(): Iterator<String> = lineSequence().iterator()
private class LinesSequence(private val reader: BufferedReader) : Sequence<String> {
override public fun iterator(): Iterator<String> {