From 13c89b7ae9f0217ca389c4feacb2040aa2757735 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 1 Jun 2015 17:28:02 +0300 Subject: [PATCH] Provide lineSequence() extension method instead of BufferedReader.lines() in order not to conflict with JDK8 instance method with the same name. --- libraries/stdlib/src/kotlin/io/ReadWrite.kt | 11 +++++++---- libraries/stdlib/test/io/ReadWrite.kt | 10 +++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/libraries/stdlib/src/kotlin/io/ReadWrite.kt b/libraries/stdlib/src/kotlin/io/ReadWrite.kt index b2ea6d2c9bb..08b779f559f 100644 --- a/libraries/stdlib/src/kotlin/io/ReadWrite.kt +++ b/libraries/stdlib/src/kotlin/io/ReadWrite.kt @@ -235,7 +235,7 @@ public fun Reader.forEachLine(block: (String) -> Unit): Unit = useLines { it.for * @return the value returned by [block]. */ public inline fun Reader.useLines(block: (Sequence) -> 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 Reader.useLines(block: (Sequence) -> T): T = * * @return a sequence of corresponding file lines. The sequence returned can be iterated only once. */ -public fun BufferedReader.lines(): Sequence = LinesSequence(this).constrainOnce() +public fun BufferedReader.lineSequence(): Sequence = LinesSequence(this).constrainOnce() -deprecated("Use lines() function which returns Sequence") -public fun BufferedReader.lineIterator(): Iterator = lines().iterator() +deprecated("Use lineSequence() instead to avoid conflict with JDK8 lines() method.", ReplaceWith("lineSequence()")) +public fun BufferedReader.lines(): Sequence = lineSequence() + +deprecated("Use lineSequence() function which returns Sequence") +public fun BufferedReader.lineIterator(): Iterator = lineSequence().iterator() private class LinesSequence(private val reader: BufferedReader) : Sequence { override public fun iterator(): Iterator { diff --git a/libraries/stdlib/test/io/ReadWrite.kt b/libraries/stdlib/test/io/ReadWrite.kt index 1d9d5ee03a3..39c84e6fe73 100644 --- a/libraries/stdlib/test/io/ReadWrite.kt +++ b/libraries/stdlib/test/io/ReadWrite.kt @@ -122,7 +122,7 @@ class ReadWriteTest { test fun manualClose() { val reader = sample().buffered() try { - val list = reader.lines().toArrayList() + val list = reader.lineSequence().toArrayList() assertEquals(arrayListOf("Hello", "World"), list) } finally { reader.close() @@ -131,19 +131,19 @@ class ReadWriteTest { test fun boundaryConditions() { var reader = StringReader("").buffered() - assertEquals(ArrayList(), reader.lines().toArrayList()) + assertEquals(ArrayList(), reader.lineSequence().toArrayList()) reader.close() reader = StringReader(" ").buffered() - assertEquals(arrayListOf(" "), reader.lines().toArrayList()) + assertEquals(arrayListOf(" "), reader.lineSequence().toArrayList()) reader.close() reader = StringReader(" \n").buffered() - assertEquals(arrayListOf(" "), reader.lines().toArrayList()) + assertEquals(arrayListOf(" "), reader.lineSequence().toArrayList()) reader.close() reader = StringReader(" \n ").buffered() - assertEquals(arrayListOf(" ", " "), reader.lines().toArrayList()) + assertEquals(arrayListOf(" ", " "), reader.lineSequence().toArrayList()) reader.close() } }