Fix List.takeLast for lists without RandomAccess

This commit is contained in:
Marek Langiewicz
2017-05-01 11:31:47 +02:00
committed by ilya-g
parent 8da4839f22
commit 934b0b8c38
4 changed files with 7 additions and 3 deletions
@@ -745,7 +745,7 @@ public fun <T> List<T>.takeLast(n: Int): List<T> {
for (index in size - n .. size - 1)
list.add(this[index])
} else {
for (item in listIterator(n))
for (item in listIterator(size - n))
list.add(item)
}
return list
@@ -745,7 +745,7 @@ public fun <T> List<T>.takeLast(n: Int): List<T> {
for (index in size - n .. size - 1)
list.add(this[index])
} else {
for (item in listIterator(n))
for (item in listIterator(size - n))
list.add(item)
}
return list
@@ -579,6 +579,10 @@ class CollectionTest {
assertEquals(coll, coll.takeLast(coll.size + 1))
assertFails { coll.takeLast(-1) }
val collWithoutRandomAccess = object : List<String> by coll {}
assertEquals(listOf("abc"), collWithoutRandomAccess.takeLast(1))
assertEquals(listOf("bar", "abc"), collWithoutRandomAccess.takeLast(2))
}
@Test fun takeLastWhile() {
@@ -231,7 +231,7 @@ fun filtering(): List<GenericFunction> {
for (index in size - n .. size - 1)
list.add(this[index])
} else {
for (item in listIterator(n))
for (item in listIterator(size - n))
list.add(item)
}
return list