| 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 |