JVM_IR: do not generate excessive stubs for immutable collections
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
open class BaseEmptyList<T> : List<T> {
|
||||
override val size: Int = 0
|
||||
override fun contains(element: T): Boolean = false
|
||||
override fun containsAll(elements: Collection<T>): Boolean = false
|
||||
override fun get(index: Int): T = error("Do not call")
|
||||
override fun indexOf(element: T): Int = -1
|
||||
override fun isEmpty(): Boolean = true
|
||||
override fun iterator(): Iterator<T> = emptyIterator()
|
||||
override fun lastIndexOf(element: T): Int = -1
|
||||
override fun listIterator(): ListIterator<T> = emptyIterator()
|
||||
override fun listIterator(index: Int): ListIterator<T> = emptyIterator()
|
||||
override fun subList(fromIndex: Int, toIndex: Int): List<T> = this
|
||||
|
||||
private fun emptyIterator() = object : ListIterator<T> {
|
||||
override fun hasNext(): Boolean = false
|
||||
override fun next(): T = error("Do not call")
|
||||
override fun hasPrevious(): Boolean = false
|
||||
override fun nextIndex(): Int = 0
|
||||
override fun previous(): T = error("Do not call")
|
||||
override fun previousIndex(): Int = 0
|
||||
}
|
||||
}
|
||||
|
||||
class DerivedEmptyList : BaseEmptyList<String>(), List<String>
|
||||
|
||||
// add() stub should be generated for BaseEmptyList, but not for DerivedEmptyList
|
||||
// 1 public add\(ILjava/lang/Object;\)V
|
||||
Reference in New Issue
Block a user