diff --git a/libraries/stdlib/js/irRuntime/generated/_ArraysJs.kt b/libraries/stdlib/js/irRuntime/generated/_ArraysJs.kt index 76f89d458b9..58a365cf1b8 100644 --- a/libraries/stdlib/js/irRuntime/generated/_ArraysJs.kt +++ b/libraries/stdlib/js/irRuntime/generated/_ArraysJs.kt @@ -1272,7 +1272,7 @@ public actual fun IntArray.toTypedArray(): Array { * Returns a *typed* object array containing all of the elements of this primitive array. */ public actual fun LongArray.toTypedArray(): Array { - return copyOf().unsafeCast>() + return js("[]").slice.call(this) } /** @@ -1293,7 +1293,7 @@ public actual fun DoubleArray.toTypedArray(): Array { * Returns a *typed* object array containing all of the elements of this primitive array. */ public actual fun BooleanArray.toTypedArray(): Array { - return copyOf().unsafeCast>() + return js("[]").slice.call(this) } /** diff --git a/libraries/stdlib/js/src/generated/_ArraysJs.kt b/libraries/stdlib/js/src/generated/_ArraysJs.kt index c0f39901d7d..b94e1f68854 100644 --- a/libraries/stdlib/js/src/generated/_ArraysJs.kt +++ b/libraries/stdlib/js/src/generated/_ArraysJs.kt @@ -1308,7 +1308,7 @@ public actual fun IntArray.toTypedArray(): Array { * Returns a *typed* object array containing all of the elements of this primitive array. */ public actual fun LongArray.toTypedArray(): Array { - return copyOf().unsafeCast>() + return js("[]").slice.call(this) } /** @@ -1329,7 +1329,7 @@ public actual fun DoubleArray.toTypedArray(): Array { * Returns a *typed* object array containing all of the elements of this primitive array. */ public actual fun BooleanArray.toTypedArray(): Array { - return copyOf().unsafeCast>() + return js("[]").slice.call(this) } /** diff --git a/libraries/stdlib/js/test/collections/ArraysJsTest.kt b/libraries/stdlib/js/test/collections/ArraysJsTest.kt new file mode 100644 index 00000000000..c69de0762c1 --- /dev/null +++ b/libraries/stdlib/js/test/collections/ArraysJsTest.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. 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.js.collections + +import kotlin.test.* + +class ArraysJsTest { + @Test + fun toTypedArrayIsObjectArray() { + fun checkIsObjectArray(array: Any, arrayType: String) = assertTrue(array is Array<*>, "$arrayType.toTypedArray() is not Array<*>") + checkIsObjectArray(intArrayOf(1).toTypedArray(), "IntArray") + checkIsObjectArray(longArrayOf(1).toTypedArray(), "LongArray") + checkIsObjectArray(charArrayOf('a').toTypedArray(), "CharArray") + checkIsObjectArray(booleanArrayOf(false).toTypedArray(), "BooleanArray") + } +} diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt index 264208665ee..a3af6601339 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Arrays.kt @@ -1070,8 +1070,6 @@ object ArrayOps : TemplateGroupBase() { on(Platform.JS) { when (primitive) { PrimitiveType.Char -> {} - PrimitiveType.Boolean, PrimitiveType.Long -> - body { "return copyOf().unsafeCast>()" } else -> body { "return js(\"[]\").slice.call(this)" } }