Fix List.takeLast for lists without RandomAccess
This commit is contained in:
@@ -745,7 +745,7 @@ public fun <T> List<T>.takeLast(n: Int): List<T> {
|
|||||||
for (index in size - n .. size - 1)
|
for (index in size - n .. size - 1)
|
||||||
list.add(this[index])
|
list.add(this[index])
|
||||||
} else {
|
} else {
|
||||||
for (item in listIterator(n))
|
for (item in listIterator(size - n))
|
||||||
list.add(item)
|
list.add(item)
|
||||||
}
|
}
|
||||||
return list
|
return list
|
||||||
|
|||||||
@@ -745,7 +745,7 @@ public fun <T> List<T>.takeLast(n: Int): List<T> {
|
|||||||
for (index in size - n .. size - 1)
|
for (index in size - n .. size - 1)
|
||||||
list.add(this[index])
|
list.add(this[index])
|
||||||
} else {
|
} else {
|
||||||
for (item in listIterator(n))
|
for (item in listIterator(size - n))
|
||||||
list.add(item)
|
list.add(item)
|
||||||
}
|
}
|
||||||
return list
|
return list
|
||||||
|
|||||||
@@ -579,6 +579,10 @@ class CollectionTest {
|
|||||||
assertEquals(coll, coll.takeLast(coll.size + 1))
|
assertEquals(coll, coll.takeLast(coll.size + 1))
|
||||||
|
|
||||||
assertFails { coll.takeLast(-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() {
|
@Test fun takeLastWhile() {
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ fun filtering(): List<GenericFunction> {
|
|||||||
for (index in size - n .. size - 1)
|
for (index in size - n .. size - 1)
|
||||||
list.add(this[index])
|
list.add(this[index])
|
||||||
} else {
|
} else {
|
||||||
for (item in listIterator(n))
|
for (item in listIterator(size - n))
|
||||||
list.add(item)
|
list.add(item)
|
||||||
}
|
}
|
||||||
return list
|
return list
|
||||||
|
|||||||
Reference in New Issue
Block a user