From a3eaa3e0f9320275fb772fd49eab4083505a9957 Mon Sep 17 00:00:00 2001 From: Abduqodiri Qurbonzoda Date: Wed, 1 Sep 2021 11:23:39 +0300 Subject: [PATCH] Change JS AbstractMutableCollection.toJSON() visibility modifier from open to protected --- .../stdlib/api/js-v1/kotlin.collections.kt | 3 ++- libraries/stdlib/api/js/kotlin.collections.kt | 3 ++- .../collections/AbstractMutableCollection.kt | 3 ++- .../js/test/collections/CollectionsJsTest.kt | 19 +++++++++++++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 libraries/stdlib/js/test/collections/CollectionsJsTest.kt diff --git a/libraries/stdlib/api/js-v1/kotlin.collections.kt b/libraries/stdlib/api/js-v1/kotlin.collections.kt index 47d975850aa..fdb99c17447 100644 --- a/libraries/stdlib/api/js-v1/kotlin.collections.kt +++ b/libraries/stdlib/api/js-v1/kotlin.collections.kt @@ -10296,8 +10296,9 @@ public abstract class AbstractMutableCollection : kotlin.collections.Abstract public open override fun retainAll(elements: kotlin.collections.Collection): kotlin.Boolean + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "Provided so that subclasses inherit this function") @kotlin.js.JsName(name = "toJSON") - public open fun toJSON(): kotlin.Any + protected final fun toJSON(): kotlin.Any } public abstract class AbstractMutableList : kotlin.collections.AbstractMutableCollection, kotlin.collections.MutableList { diff --git a/libraries/stdlib/api/js/kotlin.collections.kt b/libraries/stdlib/api/js/kotlin.collections.kt index 1eaa0b303e8..7ebd7720d4b 100644 --- a/libraries/stdlib/api/js/kotlin.collections.kt +++ b/libraries/stdlib/api/js/kotlin.collections.kt @@ -10260,8 +10260,9 @@ public abstract class AbstractMutableCollection : kotlin.collections.Abstract public open override fun retainAll(elements: kotlin.collections.Collection): kotlin.Boolean + @kotlin.Deprecated(level = DeprecationLevel.HIDDEN, message = "Provided so that subclasses inherit this function") @kotlin.js.JsName(name = "toJSON") - public open fun toJSON(): kotlin.Any + protected final fun toJSON(): kotlin.Any } public abstract class AbstractMutableList : kotlin.collections.AbstractMutableCollection, kotlin.collections.MutableList { diff --git a/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt b/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt index 10f77c4bf4e..35c601cb17e 100644 --- a/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt +++ b/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt @@ -54,8 +54,9 @@ public actual abstract class AbstractMutableCollection protected actual const } } + @Deprecated("Provided so that subclasses inherit this function", level = DeprecationLevel.HIDDEN) @JsName("toJSON") - open fun toJSON(): Any = this.toArray() + protected fun toJSON(): Any = this.toArray() /** diff --git a/libraries/stdlib/js/test/collections/CollectionsJsTest.kt b/libraries/stdlib/js/test/collections/CollectionsJsTest.kt new file mode 100644 index 00000000000..f107ed45915 --- /dev/null +++ b/libraries/stdlib/js/test/collections/CollectionsJsTest.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package test.collections.js + +import kotlin.test.* + +class CollectionsJsTest { + @Test + fun toJSON() { + val list = arrayListOf("array", "List", "Of") + assertContentEquals(arrayOf("array", "List", "Of"), list.asDynamic().toJSON() as Array) + + val set = linkedSetOf("linked", "Set", "Of") + assertContentEquals(arrayOf("linked", "Set", "Of"), (set as AbstractMutableCollection).asDynamic().toJSON() as Array) + } +} \ No newline at end of file