From 0f972f24123b12dca38f193e00b9e64c69636aca Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 5 Jun 2018 22:15:02 +0300 Subject: [PATCH] Restore default parameter values in JS collection constructors Even if they now have overloads that will be selected when these parameters are omitted. This is to preserve compatibility with the libraries compiled against the older library. #KT-24782 Fixed --- libraries/stdlib/js/src/kotlin/collections/ArrayList.kt | 3 ++- libraries/stdlib/js/src/kotlin/collections/HashMap.kt | 7 ++++--- libraries/stdlib/js/src/kotlin/collections/HashSet.kt | 3 ++- .../stdlib/js/src/kotlin/collections/LinkedHashMap.kt | 3 ++- .../stdlib/js/src/kotlin/collections/LinkedHashSet.kt | 3 ++- libraries/stdlib/js/src/kotlin/text.kt | 2 +- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt b/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt index 582205789bb..b67d9965293 100644 --- a/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt +++ b/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt @@ -23,7 +23,8 @@ public actual open class ArrayList internal constructor(private var array: Ar * Creates an empty [ArrayList]. * @param initialCapacity initial capacity (ignored) */ - public actual constructor(initialCapacity: Int) : this(emptyArray()) {} + @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") + public actual constructor(initialCapacity: Int = 0) : this(emptyArray()) {} /** * Creates an [ArrayList] filled from the [elements] collection. diff --git a/libraries/stdlib/js/src/kotlin/collections/HashMap.kt b/libraries/stdlib/js/src/kotlin/collections/HashMap.kt index 04b0d4b2079..6a49633e795 100644 --- a/libraries/stdlib/js/src/kotlin/collections/HashMap.kt +++ b/libraries/stdlib/js/src/kotlin/collections/HashMap.kt @@ -66,10 +66,11 @@ public actual open class HashMap : AbstractMutableMap, MutableMap= 0) { "Negative initial capacity" } - require(loadFactor >= 0) { "Non-positive load factor" } + require(initialCapacity >= 0) { "Negative initial capacity: $initialCapacity" } + require(loadFactor >= 0) { "Non-positive load factor: $loadFactor" } } actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f) diff --git a/libraries/stdlib/js/src/kotlin/collections/HashSet.kt b/libraries/stdlib/js/src/kotlin/collections/HashSet.kt index 9eb342ee4d4..31d0aeda740 100644 --- a/libraries/stdlib/js/src/kotlin/collections/HashSet.kt +++ b/libraries/stdlib/js/src/kotlin/collections/HashSet.kt @@ -39,7 +39,8 @@ public actual open class HashSet : AbstractMutableSet, MutableSet { * * @throws IllegalArgumentException if the initial capacity or load factor are negative */ - actual constructor(initialCapacity: Int, loadFactor: Float) { + @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") + actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) { map = HashMap(initialCapacity, loadFactor) } diff --git a/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt b/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt index 4093b4ba42f..39e4f7f66cf 100644 --- a/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt +++ b/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt @@ -174,7 +174,8 @@ public actual open class LinkedHashMap : HashMap, MutableMap { * * @throws IllegalArgumentException if the initial capacity or load factor are negative */ - actual constructor(initialCapacity: Int, loadFactor: Float) : super(initialCapacity, loadFactor) { + @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") + actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(initialCapacity, loadFactor) { map = HashMap>() } diff --git a/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt b/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt index a44344363bd..0dcaf748331 100644 --- a/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt +++ b/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt @@ -38,7 +38,8 @@ public actual open class LinkedHashSet : HashSet, MutableSet { * * @throws IllegalArgumentException if the initial capacity or load factor are negative */ - actual constructor(initialCapacity: Int, loadFactor: Float) : super(LinkedHashMap(initialCapacity, loadFactor)) + @Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") + actual constructor(initialCapacity: Int, loadFactor: Float = 0.0f) : super(LinkedHashMap(initialCapacity, loadFactor)) actual constructor(initialCapacity: Int) : this(initialCapacity, 0.0f) diff --git a/libraries/stdlib/js/src/kotlin/text.kt b/libraries/stdlib/js/src/kotlin/text.kt index d0e9864bc32..fec1bdfc638 100644 --- a/libraries/stdlib/js/src/kotlin/text.kt +++ b/libraries/stdlib/js/src/kotlin/text.kt @@ -12,7 +12,7 @@ public actual interface Appendable { public actual fun append(c: Char): Appendable } -public actual class StringBuilder(content: String) : Appendable, CharSequence { +public actual class StringBuilder(content: String = "") : Appendable, CharSequence { actual constructor(capacity: Int) : this() {} actual constructor(content: CharSequence) : this(content.toString()) {}