From 703ee6bd784f8eae670ec2c7f0ca776f83fdb657 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 13 Oct 2016 22:16:30 +0300 Subject: [PATCH] Have mutable collection interfaces specified explicitly to get rid of platform types in parameter and return types. --- .../src/kotlin/collections/AbstractMutableCollection.kt | 2 +- .../stdlib/src/kotlin/collections/AbstractMutableList.kt | 2 +- .../stdlib/src/kotlin/collections/AbstractMutableMap.kt | 2 +- .../stdlib/src/kotlin/collections/AbstractMutableSet.kt | 5 +++-- .../reference-public-api/kotlin-stdlib.txt | 8 ++++---- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/libraries/stdlib/src/kotlin/collections/AbstractMutableCollection.kt b/libraries/stdlib/src/kotlin/collections/AbstractMutableCollection.kt index 9bbbba5cda4..b95ea5ba888 100644 --- a/libraries/stdlib/src/kotlin/collections/AbstractMutableCollection.kt +++ b/libraries/stdlib/src/kotlin/collections/AbstractMutableCollection.kt @@ -4,6 +4,6 @@ package kotlin.collections import java.util.AbstractCollection @SinceKotlin("1.1") -public abstract class AbstractMutableCollection protected constructor() : AbstractCollection() { +public abstract class AbstractMutableCollection protected constructor() : MutableCollection, AbstractCollection() { abstract override fun add(element: E): Boolean } \ No newline at end of file diff --git a/libraries/stdlib/src/kotlin/collections/AbstractMutableList.kt b/libraries/stdlib/src/kotlin/collections/AbstractMutableList.kt index 370e95d2e55..45e254affd6 100644 --- a/libraries/stdlib/src/kotlin/collections/AbstractMutableList.kt +++ b/libraries/stdlib/src/kotlin/collections/AbstractMutableList.kt @@ -4,7 +4,7 @@ package kotlin.collections import java.util.AbstractList @SinceKotlin("1.1") -public abstract class AbstractMutableList protected constructor() : AbstractList() { +public abstract class AbstractMutableList protected constructor() : MutableList, AbstractList() { abstract override fun set(index: Int, element: E): E abstract override fun removeAt(index: Int): E abstract override fun add(index: Int, element: E) diff --git a/libraries/stdlib/src/kotlin/collections/AbstractMutableMap.kt b/libraries/stdlib/src/kotlin/collections/AbstractMutableMap.kt index e88c3a745b2..739c71eefab 100644 --- a/libraries/stdlib/src/kotlin/collections/AbstractMutableMap.kt +++ b/libraries/stdlib/src/kotlin/collections/AbstractMutableMap.kt @@ -4,6 +4,6 @@ package kotlin.collections import java.util.AbstractMap @SinceKotlin("1.1") -public abstract class AbstractMutableMap protected constructor() : AbstractMap() { +public abstract class AbstractMutableMap protected constructor() : MutableMap, AbstractMap() { abstract override fun put(key: K, value: V): V? } \ No newline at end of file diff --git a/libraries/stdlib/src/kotlin/collections/AbstractMutableSet.kt b/libraries/stdlib/src/kotlin/collections/AbstractMutableSet.kt index 5d34c9acd89..4a42dbfb7b5 100644 --- a/libraries/stdlib/src/kotlin/collections/AbstractMutableSet.kt +++ b/libraries/stdlib/src/kotlin/collections/AbstractMutableSet.kt @@ -4,6 +4,7 @@ package kotlin.collections import java.util.AbstractSet @SinceKotlin("1.1") -public abstract class AbstractMutableSet protected constructor() : AbstractSet() { - // nothing to make abstract, maybe leave it typealias then? +public abstract class AbstractMutableSet protected constructor() : MutableSet, AbstractSet() { + // 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 } \ No newline at end of file diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt index 4e80cacba1b..45c1c7fcf6c 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib.txt @@ -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 ()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 ()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 ()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 ()V public abstract fun getSize ()I public final fun size ()I