Have mutable collection interfaces specified explicitly to get rid of platform types in parameter and return types.

This commit is contained in:
Ilya Gorbunov
2016-10-13 22:16:30 +03:00
parent 06b72e608e
commit 703ee6bd78
5 changed files with 10 additions and 9 deletions
@@ -4,6 +4,6 @@ package kotlin.collections
import java.util.AbstractCollection
@SinceKotlin("1.1")
public abstract class AbstractMutableCollection<E> protected constructor() : AbstractCollection<E>() {
public abstract class AbstractMutableCollection<E> protected constructor() : MutableCollection<E>, AbstractCollection<E>() {
abstract override fun add(element: E): Boolean
}
@@ -4,7 +4,7 @@ package kotlin.collections
import java.util.AbstractList
@SinceKotlin("1.1")
public abstract class AbstractMutableList<E> protected constructor() : AbstractList<E>() {
public abstract class AbstractMutableList<E> protected constructor() : MutableList<E>, AbstractList<E>() {
abstract override fun set(index: Int, element: E): E
abstract override fun removeAt(index: Int): E
abstract override fun add(index: Int, element: E)
@@ -4,6 +4,6 @@ package kotlin.collections
import java.util.AbstractMap
@SinceKotlin("1.1")
public abstract class AbstractMutableMap<K, V> protected constructor() : AbstractMap<K, V>() {
public abstract class AbstractMutableMap<K, V> protected constructor() : MutableMap<K, V>, AbstractMap<K, V>() {
abstract override fun put(key: K, value: V): V?
}
@@ -4,6 +4,7 @@ package kotlin.collections
import java.util.AbstractSet
@SinceKotlin("1.1")
public abstract class AbstractMutableSet<E> protected constructor() : AbstractSet<E>() {
// nothing to make abstract, maybe leave it typealias then?
public abstract class AbstractMutableSet<E> protected constructor() : MutableSet<E>, AbstractSet<E>() {
// nothing to make abstract
// it's a class rather than typealias in order to have bridge for `size` generated and nice non-platform types in methods
}
@@ -138,14 +138,14 @@ public abstract class kotlin/collections/AbstractMap : java/util/Map, kotlin/jvm
public final fun values ()Ljava/util/Collection;
}
public abstract class kotlin/collections/AbstractMutableCollection : java/util/AbstractCollection {
public abstract class kotlin/collections/AbstractMutableCollection : java/util/AbstractCollection, java/util/Collection, kotlin/jvm/internal/markers/KMutableCollection {
protected fun <init> ()V
public abstract fun add (Ljava/lang/Object;)Z
public abstract fun getSize ()I
public final fun size ()I
}
public abstract class kotlin/collections/AbstractMutableList : java/util/AbstractList {
public abstract class kotlin/collections/AbstractMutableList : java/util/AbstractList, java/util/List, kotlin/jvm/internal/markers/KMutableList {
protected fun <init> ()V
public abstract fun add (ILjava/lang/Object;)V
public abstract fun getSize ()I
@@ -155,7 +155,7 @@ public abstract class kotlin/collections/AbstractMutableList : java/util/Abstrac
public final fun size ()I
}
public abstract class kotlin/collections/AbstractMutableMap : java/util/AbstractMap {
public abstract class kotlin/collections/AbstractMutableMap : java/util/AbstractMap, java/util/Map, kotlin/jvm/internal/markers/KMutableMap {
protected fun <init> ()V
public final fun entrySet ()Ljava/util/Set;
public abstract fun getEntries ()Ljava/util/Set;
@@ -168,7 +168,7 @@ public abstract class kotlin/collections/AbstractMutableMap : java/util/Abstract
public final fun values ()Ljava/util/Collection;
}
public abstract class kotlin/collections/AbstractMutableSet : java/util/AbstractSet {
public abstract class kotlin/collections/AbstractMutableSet : java/util/AbstractSet, java/util/Set, kotlin/jvm/internal/markers/KMutableSet {
protected fun <init> ()V
public abstract fun getSize ()I
public final fun size ()I