diff --git a/libraries/stdlib/js-v1/.gitignore b/libraries/stdlib/js-v1/.gitignore deleted file mode 100644 index b512c09d476..00000000000 --- a/libraries/stdlib/js-v1/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules \ No newline at end of file diff --git a/libraries/stdlib/js-v1/ReadMe.md b/libraries/stdlib/js-v1/ReadMe.md deleted file mode 100644 index a67cfd30a92..00000000000 --- a/libraries/stdlib/js-v1/ReadMe.md +++ /dev/null @@ -1,9 +0,0 @@ -## Kotlin Standard Library for JS - -This module produces a `kotlin-stdlib-js` jar which contains all the Kotlin standard kotlin library code compiled to JavaScript. - -The tests of this module can be run and debugged inside any browser by opening the **web/index.html** file in this directory to run the test cases using [Mocha](https://mochajs.org/). - -You should execute `installMocha` gradle task before running these tests to fetch the required Mocha dependency and `testClasses` task to compile test code. - -These tests are also run during CI build with [Node.js plugin](https://github.com/srs/gradle-node-plugin). \ No newline at end of file diff --git a/libraries/stdlib/js-v1/runtime/Enum.kt b/libraries/stdlib/js-v1/runtime/Enum.kt deleted file mode 100644 index 3466ae09ab7..00000000000 --- a/libraries/stdlib/js-v1/runtime/Enum.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin - -public class Enum> : Comparable> { - @JsName("name$") private var _name: String = "" - @JsName("ordinal$") private var _ordinal: Int = 0 - - val name: String - get() = _name - - val ordinal: Int - get() = _ordinal - - override fun compareTo(other: Enum) = ordinal.compareTo(other.ordinal) - - override fun equals(other: Any?) = this === other - - override fun hashCode(): Int = js("Kotlin.identityHashCode")(this) - - override fun toString() = name - - companion object -} \ No newline at end of file diff --git a/libraries/stdlib/js-v1/runtime/arrayUtils.kt b/libraries/stdlib/js-v1/runtime/arrayUtils.kt deleted file mode 100644 index 2e0001e016f..00000000000 --- a/libraries/stdlib/js-v1/runtime/arrayUtils.kt +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2010-2020 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. - */ - -// a package is omitted to get declarations directly under the module - -@PublishedApi -external internal fun Array(size: Int): Array - -@JsName("newArray") -fun newArray(size: Int, initValue: T) = fillArrayVal(Array(size), initValue) - -@JsName("newArrayF") -inline fun arrayWithFun(size: Int, init: (Int) -> T) = fillArrayFun(Array(size), init) - -@JsName("fillArray") -inline fun fillArrayFun(array: Array, init: (Int) -> T): Array { - for (i in 0..array.size - 1) { - array[i] = init(i) - } - return array -} - -@JsName("booleanArray") -fun booleanArray(size: Int, init: dynamic): Array { - val result: dynamic = Array(size) - result.`$type$` = "BooleanArray" - return when (init) { - null, true -> fillArrayVal(result, false) - false -> result - else -> fillArrayFun(result, init) - } -} - -@JsName("booleanArrayF") -inline fun booleanArrayWithFun(size: Int, init: (Int) -> Boolean): Array = fillArrayFun(booleanArray(size, false), init) - -@JsName("charArray") -@Suppress("UNUSED_PARAMETER") -fun charArray(size: Int, init: dynamic): Array { - val result = js("new Uint16Array(size)") - result.`$type$` = "CharArray" - return when (init) { - null, true, false -> result // For consistency - else -> fillArrayFun(result, init) - } -} - -@JsName("charArrayF") -inline fun charArrayWithFun(size: Int, init: (Int) -> Char): Array { - val array = charArray(size, null) - for (i in 0..array.size - 1) { - @Suppress("UNUSED_VARIABLE") // used in js block - val value = init(i) - js("array[i] = value;") - } - return array -} - -@JsName("untypedCharArrayF") -inline fun untypedCharArrayWithFun(size: Int, init: (Int) -> Char): Array { - val array = Array(size) - for (i in 0..array.size - 1) { - @Suppress("UNUSED_VARIABLE") // used in js block - val value = init(i) - js("array[i] = value;") - } - return array -} - -@JsName("longArray") -fun longArray(size: Int, init: dynamic): Array { - val result: dynamic = Array(size) - result.`$type$` = "LongArray" - return when (init) { - null, true -> fillArrayVal(result, 0L) - false -> result - else -> fillArrayFun(result, init) - } -} - -@JsName("longArrayF") -inline fun longArrayWithFun(size: Int, init: (Int) -> Long): Array = fillArrayFun(longArray(size, false), init) - -private fun fillArrayVal(array: Array, initValue: T): Array { - for (i in 0..array.size - 1) { - array[i] = initValue - } - return array -} \ No newline at end of file diff --git a/libraries/stdlib/js-v1/runtime/declarations.kt b/libraries/stdlib/js-v1/runtime/declarations.kt deleted file mode 100644 index 310e608ef34..00000000000 --- a/libraries/stdlib/js-v1/runtime/declarations.kt +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright 2010-2020 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 kotlin.js.internal - -@JsName("Error") -public external open class JsError(message: String?) diff --git a/libraries/stdlib/js-v1/runtime/hacks.kt b/libraries/stdlib/js-v1/runtime/hacks.kt deleted file mode 100644 index 7d5d391ca65..00000000000 --- a/libraries/stdlib/js-v1/runtime/hacks.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ -@file:Suppress("WRONG_EXTERNAL_DECLARATION") -package kotlin.js - -import kotlin.annotation.AnnotationTarget.* - -@Retention(AnnotationRetention.BINARY) -@Target(CLASS, FUNCTION, PROPERTY, CONSTRUCTOR, PROPERTY_GETTER, PROPERTY_SETTER) -internal external annotation class JsName(val name: String) - -internal external annotation class native - -external fun js(code: String): dynamic \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/js/arrayUtils.js b/libraries/stdlib/js-v1/src/js/arrayUtils.js deleted file mode 100644 index 9774c8fd3d1..00000000000 --- a/libraries/stdlib/js-v1/src/js/arrayUtils.js +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -Kotlin.isBooleanArray = function (a) { - return (Array.isArray(a) || a instanceof Int8Array) && a.$type$ === "BooleanArray" -}; - -Kotlin.isByteArray = function (a) { - return a instanceof Int8Array && a.$type$ !== "BooleanArray" -}; - -Kotlin.isShortArray = function (a) { - return a instanceof Int16Array -}; - -Kotlin.isCharArray = function (a) { - return a instanceof Uint16Array && a.$type$ === "CharArray" -}; - -Kotlin.isIntArray = function (a) { - return a instanceof Int32Array -}; - -Kotlin.isFloatArray = function (a) { - return a instanceof Float32Array -}; - -Kotlin.isDoubleArray = function (a) { - return a instanceof Float64Array -}; - -Kotlin.isLongArray = function (a) { - return Array.isArray(a) && a.$type$ === "LongArray" -}; - -Kotlin.isArray = function (a) { - return Array.isArray(a) && !a.$type$; -}; - -Kotlin.isArrayish = function (a) { - return Array.isArray(a) || ArrayBuffer.isView(a) -}; - -Kotlin.arrayToString = function (a) { - if (a === null) return "null" - var toString = Kotlin.isCharArray(a) ? String.fromCharCode : Kotlin.toString; - return "[" + Array.prototype.map.call(a, function(e) { return toString(e); }).join(", ") + "]"; -}; - -Kotlin.arrayDeepToString = function (arr) { - return Kotlin.kotlin.collections.contentDeepToStringImpl(arr); -}; - -Kotlin.arrayEquals = function (a, b) { - if (a === b) { - return true; - } - if (a === null || b === null || !Kotlin.isArrayish(b) || a.length !== b.length) { - return false; - } - - for (var i = 0, n = a.length; i < n; i++) { - if (!Kotlin.equals(a[i], b[i])) { - return false; - } - } - return true; -}; - -Kotlin.arrayDeepEquals = function (a, b) { - return Kotlin.kotlin.collections.contentDeepEqualsImpl(a, b); -}; - -Kotlin.arrayHashCode = function (arr) { - if (arr === null) return 0 - var result = 1; - for (var i = 0, n = arr.length; i < n; i++) { - result = ((31 * result | 0) + Kotlin.hashCode(arr[i])) | 0; - } - return result; -}; - -Kotlin.arrayDeepHashCode = function (arr) { - return Kotlin.kotlin.collections.contentDeepHashCodeImpl(arr); -}; - -Kotlin.primitiveArraySort = function (array) { - array.sort(Kotlin.doubleCompareTo) -}; diff --git a/libraries/stdlib/js-v1/src/js/callableReferenceUtils.js b/libraries/stdlib/js-v1/src/js/callableReferenceUtils.js deleted file mode 100644 index c08572f5315..00000000000 --- a/libraries/stdlib/js-v1/src/js/callableReferenceUtils.js +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -Kotlin.getCallableRef = function(name, f) { - f.callableName = name; - return f; -}; - -Kotlin.getPropertyCallableRef = function(name, paramCount, getter, setter) { - getter.get = getter; - getter.set = setter; - getter.callableName = name; - return getPropertyRefClass(getter, setter, propertyRefClassMetadataCache[paramCount]); -}; - -function getPropertyRefClass(obj, setter, cache) { - obj.$metadata$ = getPropertyRefMetadata(typeof setter === "function" ? cache.mutable : cache.immutable); - obj.constructor = obj; - return obj; -} - -var propertyRefClassMetadataCache = [ - { - mutable: { value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KMutableProperty0 } - }, - immutable: { value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KProperty0 } - } - }, - { - mutable: { value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KMutableProperty1 } - }, - immutable: { value: null, implementedInterface: function () { - return Kotlin.kotlin.reflect.KProperty1 } - } - } -]; - -function getPropertyRefMetadata(cache) { - if (cache.value === null) { - cache.value = { - interfaces: [cache.implementedInterface()], - baseClass: null, - functions: {}, - properties: {}, - types: {}, - staticMembers: {} - }; - } - return cache.value; -} diff --git a/libraries/stdlib/js-v1/src/js/conversions.js b/libraries/stdlib/js-v1/src/js/conversions.js deleted file mode 100644 index eb0fe5b9594..00000000000 --- a/libraries/stdlib/js-v1/src/js/conversions.js +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -Kotlin.toShort = function (a) { - return (a & 0xFFFF) << 16 >> 16; -}; - -Kotlin.toByte = function (a) { - return (a & 0xFF) << 24 >> 24; -}; - -Kotlin.toChar = function (a) { - return a & 0xFFFF; -}; - -Kotlin.numberToLong = function (a) { - return a instanceof Kotlin.Long ? a : Kotlin.Long.fromNumber(a); -}; - -Kotlin.numberToInt = function (a) { - return a instanceof Kotlin.Long ? a.toInt() : Kotlin.doubleToInt(a); -}; - -Kotlin.numberToShort = function (a) { - return Kotlin.toShort(Kotlin.numberToInt(a)); -}; - -Kotlin.numberToByte = function (a) { - return Kotlin.toByte(Kotlin.numberToInt(a)); -}; - -Kotlin.numberToDouble = function (a) { - return +a; -}; - -Kotlin.numberToChar = function (a) { - return Kotlin.toChar(Kotlin.numberToInt(a)); -}; - -Kotlin.doubleToInt = function(a) { - if (a > 2147483647) return 2147483647; - if (a < -2147483648) return -2147483648; - return a | 0; -}; - -Kotlin.toBoxedChar = function (a) { - if (a == null) return a; - if (a instanceof Kotlin.BoxedChar) return a; - return new Kotlin.BoxedChar(a); -}; - -Kotlin.unboxChar = function(a) { - if (a == null) return a; - return Kotlin.toChar(a); -}; diff --git a/libraries/stdlib/js-v1/src/js/core.js b/libraries/stdlib/js-v1/src/js/core.js deleted file mode 100644 index 2f4bf80c7a5..00000000000 --- a/libraries/stdlib/js-v1/src/js/core.js +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -Kotlin.equals = function (obj1, obj2) { - if (obj1 == null) { - return obj2 == null; - } - - if (obj2 == null) { - return false; - } - - if (obj1 !== obj1) { - return obj2 !== obj2; - } - - if (typeof obj1 === "object" && typeof obj1.equals === "function") { - return obj1.equals(obj2); - } - - if (typeof obj1 === "number" && typeof obj2 === "number") { - return obj1 === obj2 && (obj1 !== 0 || 1 / obj1 === 1 / obj2) - } - - return obj1 === obj2; -}; - -Kotlin.hashCode = function (obj) { - if (obj == null) { - return 0; - } - var objType = typeof obj; - if ("object" === objType) { - return "function" === typeof obj.hashCode ? obj.hashCode() : getObjectHashCode(obj); - } - if ("function" === objType) { - return getObjectHashCode(obj); - } - if ("number" === objType) { - return Kotlin.numberHashCode(obj); - } - if ("boolean" === objType) { - return obj ? 1231 : 1237; - } - - var str = String(obj); - return getStringHashCode(str); -}; - - -Kotlin.toString = function (o) { - if (o == null) { - return "null"; - } - else if (Kotlin.isArrayish(o)) { - return "[...]"; - } - else { - return o.toString(); - } -}; - -/** @const */ -var POW_2_32 = 4294967296; -// TODO: consider switching to Symbol type once we are on ES6. -/** @const */ -var OBJECT_HASH_CODE_PROPERTY_NAME = "kotlinHashCodeValue$"; - -function getObjectHashCode(obj) { - if (!(OBJECT_HASH_CODE_PROPERTY_NAME in obj)) { - var hash = (Math.random() * POW_2_32) | 0; // Make 32-bit singed integer. - Object.defineProperty(obj, OBJECT_HASH_CODE_PROPERTY_NAME, { value: hash, enumerable: false }); - } - return obj[OBJECT_HASH_CODE_PROPERTY_NAME]; -} - -function getStringHashCode(str) { - var hash = 0; - for (var i = 0; i < str.length; i++) { - var code = str.charCodeAt(i); - hash = (hash * 31 + code) | 0; // Keep it 32-bit. - } - return hash; -} - -Kotlin.identityHashCode = getObjectHashCode; diff --git a/libraries/stdlib/js-v1/src/js/long.js b/libraries/stdlib/js-v1/src/js/long.js deleted file mode 100644 index fe5b554a586..00000000000 --- a/libraries/stdlib/js-v1/src/js/long.js +++ /dev/null @@ -1,837 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -// Copyright 2009 The Closure Library Authors. All Rights Reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS-IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - -/** - * Constructs a 64-bit two's-complement integer, given its low and high 32-bit - * values as *signed* integers. See the from* functions below for more - * convenient ways of constructing Longs. - * - * The internal representation of a long is the two given signed, 32-bit values. - * We use 32-bit pieces because these are the size of integers on which - * Javascript performs bit-operations. For operations like addition and - * multiplication, we split each number into 16-bit pieces, which can easily be - * multiplied within Javascript's floating-point representation without overflow - * or change in sign. - * - * In the algorithms below, we frequently reduce the negative case to the - * positive case by negating the input(s) and then post-processing the result. - * Note that we must ALWAYS check specially whether those values are MIN_VALUE - * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as - * a positive number, it overflows back into a negative). Not handling this - * case would often result in infinite recursion. - * - * @param {number} low The low (signed) 32 bits of the long. - * @param {number} high The high (signed) 32 bits of the long. - * @constructor - * @final - */ -Kotlin.Long = function(low, high) { - /** - * @type {number} - * @private - */ - this.low_ = low | 0; // force into 32 signed bits. - - /** - * @type {number} - * @private - */ - this.high_ = high | 0; // force into 32 signed bits. -}; - -Kotlin.Long.$metadata$ = { - kind: "class", - simpleName: "Long", - interfaces:[] -}; - - -// NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the -// from* methods on which they depend. - - -/** - * A cache of the Long representations of small integer values. - * @type {!Object} - * @private - */ -Kotlin.Long.IntCache_ = {}; - - -/** - * Returns a Long representing the given (32-bit) integer value. - * @param {number} value The 32-bit integer in question. - * @return {!Kotlin.Long} The corresponding Long value. - */ -Kotlin.Long.fromInt = function(value) { - if (-128 <= value && value < 128) { - var cachedObj = Kotlin.Long.IntCache_[value]; - if (cachedObj) { - return cachedObj; - } - } - - var obj = new Kotlin.Long(value | 0, value < 0 ? -1 : 0); - if (-128 <= value && value < 128) { - Kotlin.Long.IntCache_[value] = obj; - } - return obj; -}; - - -/** - * Converts this number value to `Long`. - * The fractional part, if any, is rounded down towards zero. - * Returns zero if this `Double` value is `NaN`, `Long.MIN_VALUE` if it's less than `Long.MIN_VALUE`, - * `Long.MAX_VALUE` if it's bigger than `Long.MAX_VALUE`. - * @param {number} value The number in question. - * @return {!Kotlin.Long} The corresponding Long value. - */ -Kotlin.Long.fromNumber = function(value) { - if (isNaN(value)) { - return Kotlin.Long.ZERO; - } else if (value <= -Kotlin.Long.TWO_PWR_63_DBL_) { - return Kotlin.Long.MIN_VALUE; - } else if (value + 1 >= Kotlin.Long.TWO_PWR_63_DBL_) { - return Kotlin.Long.MAX_VALUE; - } else if (value < 0) { - return Kotlin.Long.fromNumber(-value).negate(); - } else { - return new Kotlin.Long( - (value % Kotlin.Long.TWO_PWR_32_DBL_) | 0, - (value / Kotlin.Long.TWO_PWR_32_DBL_) | 0); - } -}; - - -/** - * Returns a Long representing the 64-bit integer that comes by concatenating - * the given high and low bits. Each is assumed to use 32 bits. - * @param {number} lowBits The low 32-bits. - * @param {number} highBits The high 32-bits. - * @return {!Kotlin.Long} The corresponding Long value. - */ -Kotlin.Long.fromBits = function(lowBits, highBits) { - return new Kotlin.Long(lowBits, highBits); -}; - - -/** - * Returns a Long representation of the given string, written using the given - * radix. - * @param {string} str The textual representation of the Long. - * @param {number=} opt_radix The radix in which the text is written. - * @return {!Kotlin.Long} The corresponding Long value. - */ -Kotlin.Long.fromString = function(str, opt_radix) { - if (str.length == 0) { - throw Error('number format error: empty string'); - } - - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (str.charAt(0) == '-') { - return Kotlin.Long.fromString(str.substring(1), radix).negate(); - } else if (str.indexOf('-') >= 0) { - throw Error('number format error: interior "-" character: ' + str); - } - - // Do several (8) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 8)); - - var result = Kotlin.Long.ZERO; - for (var i = 0; i < str.length; i += 8) { - var size = Math.min(8, str.length - i); - var value = parseInt(str.substring(i, i + size), radix); - if (size < 8) { - var power = Kotlin.Long.fromNumber(Math.pow(radix, size)); - result = result.multiply(power).add(Kotlin.Long.fromNumber(value)); - } else { - result = result.multiply(radixToPower); - result = result.add(Kotlin.Long.fromNumber(value)); - } - } - return result; -}; - - -// NOTE: the compiler should inline these constant values below and then remove -// these variables, so there should be no runtime penalty for these. - - -/** - * Number used repeated below in calculations. This must appear before the - * first call to any from* function below. - * @type {number} - * @private - */ -Kotlin.Long.TWO_PWR_16_DBL_ = 1 << 16; - - -/** - * @type {number} - * @private - */ -Kotlin.Long.TWO_PWR_24_DBL_ = 1 << 24; - - -/** - * @type {number} - * @private - */ -Kotlin.Long.TWO_PWR_32_DBL_ = - Kotlin.Long.TWO_PWR_16_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_; - - -/** - * @type {number} - * @private - */ -Kotlin.Long.TWO_PWR_31_DBL_ = - Kotlin.Long.TWO_PWR_32_DBL_ / 2; - - -/** - * @type {number} - * @private - */ -Kotlin.Long.TWO_PWR_48_DBL_ = - Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_16_DBL_; - - -/** - * @type {number} - * @private - */ -Kotlin.Long.TWO_PWR_64_DBL_ = - Kotlin.Long.TWO_PWR_32_DBL_ * Kotlin.Long.TWO_PWR_32_DBL_; - - -/** - * @type {number} - * @private - */ -Kotlin.Long.TWO_PWR_63_DBL_ = - Kotlin.Long.TWO_PWR_64_DBL_ / 2; - - -/** @type {!Kotlin.Long} */ -Kotlin.Long.ZERO = Kotlin.Long.fromInt(0); - - -/** @type {!Kotlin.Long} */ -Kotlin.Long.ONE = Kotlin.Long.fromInt(1); - - -/** @type {!Kotlin.Long} */ -Kotlin.Long.NEG_ONE = Kotlin.Long.fromInt(-1); - - -/** @type {!Kotlin.Long} */ -Kotlin.Long.MAX_VALUE = - Kotlin.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0); - - -/** @type {!Kotlin.Long} */ -Kotlin.Long.MIN_VALUE = Kotlin.Long.fromBits(0, 0x80000000 | 0); - - -/** - * @type {!Kotlin.Long} - * @private - */ -Kotlin.Long.TWO_PWR_24_ = Kotlin.Long.fromInt(1 << 24); - - -/** @return {number} The value, assuming it is a 32-bit integer. */ -Kotlin.Long.prototype.toInt = function() { - return this.low_; -}; - - -/** @return {number} The closest floating-point representation to this value. */ -Kotlin.Long.prototype.toNumber = function() { - return this.high_ * Kotlin.Long.TWO_PWR_32_DBL_ + - this.getLowBitsUnsigned(); -}; - -/** @return {number} The 32-bit hashCode of this value. */ -Kotlin.Long.prototype.hashCode = function() { - return this.high_ ^ this.low_; -}; - -/** - * @param {number=} opt_radix The radix in which the text should be written. - * @return {string} The textual representation of this value. - * @override - */ -Kotlin.Long.prototype.toString = function(opt_radix) { - var radix = opt_radix || 10; - if (radix < 2 || 36 < radix) { - throw Error('radix out of range: ' + radix); - } - - if (this.isZero()) { - return '0'; - } - - if (this.isNegative()) { - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - // We need to change the Long value before it can be negated, so we remove - // the bottom-most digit in this base and then recurse to do the rest. - var radixLong = Kotlin.Long.fromNumber(radix); - var div = this.div(radixLong); - var rem = div.multiply(radixLong).subtract(this); - return div.toString(radix) + rem.toInt().toString(radix); - } else { - return '-' + this.negate().toString(radix); - } - } - - // Do several (5) digits each time through the loop, so as to - // minimize the calls to the very expensive emulated div. - var radixToPower = Kotlin.Long.fromNumber(Math.pow(radix, 5)); - - var rem = this; - var result = ''; - while (true) { - var remDiv = rem.div(radixToPower); - var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt(); - var digits = intval.toString(radix); - - rem = remDiv; - if (rem.isZero()) { - return digits + result; - } else { - while (digits.length < 5) { - digits = '0' + digits; - } - result = '' + digits + result; - } - } -}; - - -/** @return {number} The high 32-bits as a signed value. */ -Kotlin.Long.prototype.getHighBits = function() { - return this.high_; -}; - - -/** @return {number} The low 32-bits as a signed value. */ -Kotlin.Long.prototype.getLowBits = function() { - return this.low_; -}; - - -/** @return {number} The low 32-bits as an unsigned value. */ -Kotlin.Long.prototype.getLowBitsUnsigned = function() { - return (this.low_ >= 0) ? - this.low_ : Kotlin.Long.TWO_PWR_32_DBL_ + this.low_; -}; - - -/** - * @return {number} Returns the number of bits needed to represent the absolute - * value of this Long. - */ -Kotlin.Long.prototype.getNumBitsAbs = function() { - if (this.isNegative()) { - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - return 64; - } else { - return this.negate().getNumBitsAbs(); - } - } else { - var val = this.high_ != 0 ? this.high_ : this.low_; - for (var bit = 31; bit > 0; bit--) { - if ((val & (1 << bit)) != 0) { - break; - } - } - return this.high_ != 0 ? bit + 33 : bit + 1; - } -}; - - -/** @return {boolean} Whether this value is zero. */ -Kotlin.Long.prototype.isZero = function() { - return this.high_ == 0 && this.low_ == 0; -}; - - -/** @return {boolean} Whether this value is negative. */ -Kotlin.Long.prototype.isNegative = function() { - return this.high_ < 0; -}; - - -/** @return {boolean} Whether this value is odd. */ -Kotlin.Long.prototype.isOdd = function() { - return (this.low_ & 1) == 1; -}; - - -/** - * @param {Kotlin.Long} other Long to compare against. - * @return {boolean} Whether this Long equals the other. - */ -Kotlin.Long.prototype.equalsLong = function(other) { - return (this.high_ == other.high_) && (this.low_ == other.low_); -}; - - -/** - * @param {Kotlin.Long} other Long to compare against. - * @return {boolean} Whether this Long does not equal the other. - */ -Kotlin.Long.prototype.notEqualsLong = function(other) { - return (this.high_ != other.high_) || (this.low_ != other.low_); -}; - - -/** - * @param {Kotlin.Long} other Long to compare against. - * @return {boolean} Whether this Long is less than the other. - */ -Kotlin.Long.prototype.lessThan = function(other) { - return this.compare(other) < 0; -}; - - -/** - * @param {Kotlin.Long} other Long to compare against. - * @return {boolean} Whether this Long is less than or equal to the other. - */ -Kotlin.Long.prototype.lessThanOrEqual = function(other) { - return this.compare(other) <= 0; -}; - - -/** - * @param {Kotlin.Long} other Long to compare against. - * @return {boolean} Whether this Long is greater than the other. - */ -Kotlin.Long.prototype.greaterThan = function(other) { - return this.compare(other) > 0; -}; - - -/** - * @param {Kotlin.Long} other Long to compare against. - * @return {boolean} Whether this Long is greater than or equal to the other. - */ -Kotlin.Long.prototype.greaterThanOrEqual = function(other) { - return this.compare(other) >= 0; -}; - - -/** - * Compares this Long with the given one. - * @param {Kotlin.Long} other Long to compare against. - * @return {number} 0 if they are the same, 1 if the this is greater, and -1 - * if the given one is greater. - */ -Kotlin.Long.prototype.compare = function(other) { - if (this.equalsLong(other)) { - return 0; - } - - var thisNeg = this.isNegative(); - var otherNeg = other.isNegative(); - if (thisNeg && !otherNeg) { - return -1; - } - if (!thisNeg && otherNeg) { - return 1; - } - - // at this point, the signs are the same, so subtraction will not overflow - if (this.subtract(other).isNegative()) { - return -1; - } else { - return 1; - } -}; - - -/** @return {!Kotlin.Long} The negation of this value. */ -Kotlin.Long.prototype.negate = function() { - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - return Kotlin.Long.MIN_VALUE; - } else { - return this.not().add(Kotlin.Long.ONE); - } -}; - - -/** - * Returns the sum of this and the given Long. - * @param {Kotlin.Long} other Long to add to this one. - * @return {!Kotlin.Long} The sum of this and the given Long. - */ -Kotlin.Long.prototype.add = function(other) { - // Divide each number into 4 chunks of 16 bits, and then sum the chunks. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 + b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 + b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 + b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 + b48; - c48 &= 0xFFFF; - return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - - -/** - * Returns the difference of this and the given Long. - * @param {Kotlin.Long} other Long to subtract from this. - * @return {!Kotlin.Long} The difference of this and the given Long. - */ -Kotlin.Long.prototype.subtract = function(other) { - return this.add(other.negate()); -}; - - -/** - * Returns the product of this and the given long. - * @param {Kotlin.Long} other Long to multiply with this. - * @return {!Kotlin.Long} The product of this and the other. - */ -Kotlin.Long.prototype.multiply = function(other) { - if (this.isZero()) { - return Kotlin.Long.ZERO; - } else if (other.isZero()) { - return Kotlin.Long.ZERO; - } - - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - return other.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO; - } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { - return this.isOdd() ? Kotlin.Long.MIN_VALUE : Kotlin.Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().multiply(other.negate()); - } else { - return this.negate().multiply(other).negate(); - } - } else if (other.isNegative()) { - return this.multiply(other.negate()).negate(); - } - - // If both longs are small, use float multiplication - if (this.lessThan(Kotlin.Long.TWO_PWR_24_) && - other.lessThan(Kotlin.Long.TWO_PWR_24_)) { - return Kotlin.Long.fromNumber(this.toNumber() * other.toNumber()); - } - - // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. - // We can skip products that would overflow. - - var a48 = this.high_ >>> 16; - var a32 = this.high_ & 0xFFFF; - var a16 = this.low_ >>> 16; - var a00 = this.low_ & 0xFFFF; - - var b48 = other.high_ >>> 16; - var b32 = other.high_ & 0xFFFF; - var b16 = other.low_ >>> 16; - var b00 = other.low_ & 0xFFFF; - - var c48 = 0, c32 = 0, c16 = 0, c00 = 0; - c00 += a00 * b00; - c16 += c00 >>> 16; - c00 &= 0xFFFF; - c16 += a16 * b00; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c16 += a00 * b16; - c32 += c16 >>> 16; - c16 &= 0xFFFF; - c32 += a32 * b00; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a16 * b16; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c32 += a00 * b32; - c48 += c32 >>> 16; - c32 &= 0xFFFF; - c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; - c48 &= 0xFFFF; - return Kotlin.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32); -}; - - -/** - * Returns this Long divided by the given one. - * @param {Kotlin.Long} other Long by which to divide. - * @return {!Kotlin.Long} This Long divided by the given one. - */ -Kotlin.Long.prototype.div = function(other) { - if (other.isZero()) { - throw Error('division by zero'); - } else if (this.isZero()) { - return Kotlin.Long.ZERO; - } - - if (this.equalsLong(Kotlin.Long.MIN_VALUE)) { - if (other.equalsLong(Kotlin.Long.ONE) || - other.equalsLong(Kotlin.Long.NEG_ONE)) { - return Kotlin.Long.MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE - } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { - return Kotlin.Long.ONE; - } else { - // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. - var halfThis = this.shiftRight(1); - var approx = halfThis.div(other).shiftLeft(1); - if (approx.equalsLong(Kotlin.Long.ZERO)) { - return other.isNegative() ? Kotlin.Long.ONE : Kotlin.Long.NEG_ONE; - } else { - var rem = this.subtract(other.multiply(approx)); - var result = approx.add(rem.div(other)); - return result; - } - } - } else if (other.equalsLong(Kotlin.Long.MIN_VALUE)) { - return Kotlin.Long.ZERO; - } - - if (this.isNegative()) { - if (other.isNegative()) { - return this.negate().div(other.negate()); - } else { - return this.negate().div(other).negate(); - } - } else if (other.isNegative()) { - return this.div(other.negate()).negate(); - } - - // Repeat the following until the remainder is less than other: find a - // floating-point that approximates remainder / other *from below*, add this - // into the result, and subtract it from the remainder. It is critical that - // the approximate value is less than or equal to the real value so that the - // remainder never becomes negative. - var res = Kotlin.Long.ZERO; - var rem = this; - while (rem.greaterThanOrEqual(other)) { - // Approximate the result of division. This may be a little greater or - // smaller than the actual value. - var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber())); - - // We will tweak the approximate result by changing it in the 48-th digit or - // the smallest non-fractional digit, whichever is larger. - var log2 = Math.ceil(Math.log(approx) / Math.LN2); - var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48); - - // Decrease the approximation until it is smaller than the remainder. Note - // that if it is too large, the product overflows and is negative. - var approxRes = Kotlin.Long.fromNumber(approx); - var approxRem = approxRes.multiply(other); - while (approxRem.isNegative() || approxRem.greaterThan(rem)) { - approx -= delta; - approxRes = Kotlin.Long.fromNumber(approx); - approxRem = approxRes.multiply(other); - } - - // We know the answer can't be zero... and actually, zero would cause - // infinite recursion since we would make no progress. - if (approxRes.isZero()) { - approxRes = Kotlin.Long.ONE; - } - - res = res.add(approxRes); - rem = rem.subtract(approxRem); - } - return res; -}; - - -/** - * Returns this Long modulo the given one. - * @param {Kotlin.Long} other Long by which to mod. - * @return {!Kotlin.Long} This Long modulo the given one. - */ -Kotlin.Long.prototype.modulo = function(other) { - return this.subtract(this.div(other).multiply(other)); -}; - - -/** @return {!Kotlin.Long} The bitwise-NOT of this value. */ -Kotlin.Long.prototype.not = function() { - return Kotlin.Long.fromBits(~this.low_, ~this.high_); -}; - - -/** - * Returns the bitwise-AND of this Long and the given one. - * @param {Kotlin.Long} other The Long with which to AND. - * @return {!Kotlin.Long} The bitwise-AND of this and the other. - */ -Kotlin.Long.prototype.and = function(other) { - return Kotlin.Long.fromBits(this.low_ & other.low_, - this.high_ & other.high_); -}; - - -/** - * Returns the bitwise-OR of this Long and the given one. - * @param {Kotlin.Long} other The Long with which to OR. - * @return {!Kotlin.Long} The bitwise-OR of this and the other. - */ -Kotlin.Long.prototype.or = function(other) { - return Kotlin.Long.fromBits(this.low_ | other.low_, - this.high_ | other.high_); -}; - - -/** - * Returns the bitwise-XOR of this Long and the given one. - * @param {Kotlin.Long} other The Long with which to XOR. - * @return {!Kotlin.Long} The bitwise-XOR of this and the other. - */ -Kotlin.Long.prototype.xor = function(other) { - return Kotlin.Long.fromBits(this.low_ ^ other.low_, - this.high_ ^ other.high_); -}; - - -/** - * Returns this Long with bits shifted to the left by the given amount. - * @param {number} numBits The number of bits by which to shift. - * @return {!Kotlin.Long} This shifted to the left by the given amount. - */ -Kotlin.Long.prototype.shiftLeft = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var low = this.low_; - if (numBits < 32) { - var high = this.high_; - return Kotlin.Long.fromBits( - low << numBits, - (high << numBits) | (low >>> (32 - numBits))); - } else { - return Kotlin.Long.fromBits(0, low << (numBits - 32)); - } - } -}; - - -/** - * Returns this Long with bits shifted to the right by the given amount. - * @param {number} numBits The number of bits by which to shift. - * @return {!Kotlin.Long} This shifted to the right by the given amount. - */ -Kotlin.Long.prototype.shiftRight = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Kotlin.Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >> numBits); - } else { - return Kotlin.Long.fromBits( - high >> (numBits - 32), - high >= 0 ? 0 : -1); - } - } -}; - - -/** - * Returns this Long with bits shifted to the right by the given amount, with - * zeros placed into the new leading bits. - * @param {number} numBits The number of bits by which to shift. - * @return {!Kotlin.Long} This shifted to the right by the given amount, with - * zeros placed into the new leading bits. - */ -Kotlin.Long.prototype.shiftRightUnsigned = function(numBits) { - numBits &= 63; - if (numBits == 0) { - return this; - } else { - var high = this.high_; - if (numBits < 32) { - var low = this.low_; - return Kotlin.Long.fromBits( - (low >>> numBits) | (high << (32 - numBits)), - high >>> numBits); - } else if (numBits == 32) { - return Kotlin.Long.fromBits(high, 0); - } else { - return Kotlin.Long.fromBits(high >>> (numBits - 32), 0); - } - } -}; - -// Support for Kotlin -Kotlin.Long.prototype.equals = function (other) { - return other instanceof Kotlin.Long && this.equalsLong(other); -}; - -Kotlin.Long.prototype.compareTo_11rb$ = Kotlin.Long.prototype.compare; - -Kotlin.Long.prototype.inc = function() { - return this.add(Kotlin.Long.ONE); -}; - -Kotlin.Long.prototype.dec = function() { - return this.add(Kotlin.Long.NEG_ONE); -}; - -Kotlin.Long.prototype.valueOf = function() { - return this.toNumber(); -}; - -Kotlin.Long.prototype.unaryPlus = function() { - return this; -}; - -Kotlin.Long.prototype.unaryMinus = Kotlin.Long.prototype.negate; -Kotlin.Long.prototype.inv = Kotlin.Long.prototype.not; - -Kotlin.Long.prototype.rangeTo = function (other) { - return new Kotlin.kotlin.ranges.LongRange(this, other); -}; \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/js/markerFunctions.js b/libraries/stdlib/js-v1/src/js/markerFunctions.js deleted file mode 100644 index 578bde37a46..00000000000 --- a/libraries/stdlib/js-v1/src/js/markerFunctions.js +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -/** - * @param {string} id - * @param {Object} declaration - */ -Kotlin.defineModule = function (id, declaration) { -}; - -Kotlin.defineInlineFunction = function(tag, fun) { - return fun; -}; - -Kotlin.wrapFunction = function(fun) { - var f = function() { - f = fun(); - return f.apply(this, arguments); - }; - return function() { - return f.apply(this, arguments); - }; -}; - -Kotlin.isTypeOf = function(type) { - return function (object) { - return typeof object === type; - } -}; - -Kotlin.isInstanceOf = function (klass) { - return function (object) { - return Kotlin.isType(object, klass); - } -}; - -Kotlin.orNull = function (fn) { - return function (object) { - return object == null || fn(object); - } -}; - -Kotlin.andPredicate = function (a, b) { - return function (object) { - return a(object) && b(object); - } -}; - -Kotlin.kotlinModuleMetadata = function (abiVersion, moduleName, data) { -}; - -Kotlin.suspendCall = function(value) { - return value; -}; - -Kotlin.coroutineResult = function(qualifier) { - throwMarkerError(); -}; - -Kotlin.coroutineController = function(qualifier) { - throwMarkerError(); -}; - -Kotlin.coroutineReceiver = function(qualifier) { - throwMarkerError(); -}; - -Kotlin.setCoroutineResult = function(value, qualifier) { - throwMarkerError(); -}; - -Kotlin.getReifiedTypeParameterKType = function(typeParameter) { - throwMarkerError(); -}; - -function throwMarkerError() { - throw new Error( - "This marker function should never been called. " + - "Looks like compiler did not eliminate it properly. " + - "Please, report an issue if you caught this exception."); -} - -Kotlin.getFunctionById = function(id, defaultValue) { - return function() { - return defaultValue; - } -}; \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/js/misc.js b/libraries/stdlib/js-v1/src/js/misc.js deleted file mode 100644 index 072261b6007..00000000000 --- a/libraries/stdlib/js-v1/src/js/misc.js +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -Kotlin.compareTo = function (a, b) { - var typeA = typeof a; - if (typeA === "number") { - if (typeof b === "number") { - return Kotlin.doubleCompareTo(a, b); - } - return Kotlin.primitiveCompareTo(a, b); - } - if (typeA === "string" || typeA === "boolean") { - return Kotlin.primitiveCompareTo(a, b); - } - return a.compareTo_11rb$(b); -}; - -Kotlin.primitiveCompareTo = function (a, b) { - return a < b ? -1 : a > b ? 1 : 0; -}; - -Kotlin.doubleCompareTo = function (a, b) { - if (a < b) return -1; - if (a > b) return 1; - - if (a === b) { - if (a !== 0) return 0; - - var ia = 1 / a; - return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1); - } - - return a !== a ? (b !== b ? 0 : 1) : -1 -}; - -Kotlin.charInc = function (value) { - return Kotlin.toChar(value+1); -}; - -Kotlin.charDec = function (value) { - return Kotlin.toChar(value-1); -}; - -Kotlin.imul = Math.imul || imul; - -Kotlin.imulEmulated = imul; - -function imul(a, b) { - return ((a & 0xffff0000) * (b & 0xffff) + (a & 0xffff) * (b | 0)) | 0; -} - -(function() { - var buf = new ArrayBuffer(8); - var bufFloat64 = new Float64Array(buf); - var bufFloat32 = new Float32Array(buf); - var bufInt32 = new Int32Array(buf); - var lowIndex = 0; - var highIndex = 1; - - bufFloat64[0] = -1; // bff00000_00000000 - if (bufInt32[lowIndex] !== 0) { - lowIndex = 1; - highIndex = 0; - } - - Kotlin.doubleToBits = function(value) { - return Kotlin.doubleToRawBits(isNaN(value) ? NaN : value); - }; - - Kotlin.doubleToRawBits = function(value) { - bufFloat64[0] = value; - return Kotlin.Long.fromBits(bufInt32[lowIndex], bufInt32[highIndex]); - }; - - Kotlin.doubleFromBits = function(value) { - bufInt32[lowIndex] = value.low_; - bufInt32[highIndex] = value.high_; - return bufFloat64[0]; - }; - - Kotlin.floatToBits = function(value) { - return Kotlin.floatToRawBits(isNaN(value) ? NaN : value); - }; - - Kotlin.floatToRawBits = function(value) { - bufFloat32[0] = value; - return bufInt32[0]; - }; - - Kotlin.floatFromBits = function(value) { - bufInt32[0] = value; - return bufFloat32[0]; - }; - - // returns zero value for number with positive sign bit and non-zero value for number with negative sign bit. - Kotlin.doubleSignBit = function(value) { - bufFloat64[0] = value; - return bufInt32[highIndex] & 0x80000000; - }; - - Kotlin.numberHashCode = function(obj) { - if ((obj | 0) === obj) { - return obj | 0; - } - else { - bufFloat64[0] = obj; - return (bufInt32[highIndex] * 31 | 0) + bufInt32[lowIndex] | 0; - } - } -})(); - -Kotlin.ensureNotNull = function(x) { - return x != null ? x : Kotlin.throwNPE(); -}; diff --git a/libraries/stdlib/js-v1/src/js/polyfills.js b/libraries/stdlib/js-v1/src/js/polyfills.js deleted file mode 100644 index 5ca2d993663..00000000000 --- a/libraries/stdlib/js-v1/src/js/polyfills.js +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Copyright 2010-2020 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. - */ - -if (typeof String.prototype.startsWith === "undefined") { - Object.defineProperty(String.prototype, "startsWith", { - value: function (searchString, position) { - position = position || 0; - return this.lastIndexOf(searchString, position) === position; - } - }); -} -if (typeof String.prototype.endsWith === "undefined") { - Object.defineProperty(String.prototype, "endsWith", { - value: function (searchString, position) { - var subjectString = this.toString(); - if (position === undefined || position > subjectString.length) { - position = subjectString.length; - } - position -= searchString.length; - var lastIndex = subjectString.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - } - }); -} -// ES6 Math polyfills -if (typeof Math.sign === "undefined") { - Math.sign = function(x) { - x = +x; // convert to a number - if (x === 0 || isNaN(x)) { - return Number(x); - } - return x > 0 ? 1 : -1; - }; -} -if (typeof Math.trunc === "undefined") { - Math.trunc = function(x) { - if (isNaN(x)) { - return NaN; - } - if (x > 0) { - return Math.floor(x); - } - return Math.ceil(x); - }; -} - -(function() { - var epsilon = 2.220446049250313E-16; - var taylor_2_bound = Math.sqrt(epsilon); - var taylor_n_bound = Math.sqrt(taylor_2_bound); - var upper_taylor_2_bound = 1/taylor_2_bound; - var upper_taylor_n_bound = 1/taylor_n_bound; - - if (typeof Math.sinh === "undefined") { - Math.sinh = function(x) { - if (Math.abs(x) < taylor_n_bound) { - var result = x; - if (Math.abs(x) > taylor_2_bound) { - result += (x * x * x) / 6; - } - return result; - } else { - var y = Math.exp(x); - var y1 = 1 / y; - if (!isFinite(y)) return Math.exp(x - Math.LN2); - if (!isFinite(y1)) return -Math.exp(-x - Math.LN2); - return (y - y1) / 2; - } - }; - } - if (typeof Math.cosh === "undefined") { - Math.cosh = function(x) { - var y = Math.exp(x); - var y1 = 1 / y; - if (!isFinite(y) || !isFinite(y1)) return Math.exp(Math.abs(x) - Math.LN2); - return (y + y1) / 2; - }; - } - - if (typeof Math.tanh === "undefined") { - Math.tanh = function(x){ - if (Math.abs(x) < taylor_n_bound) { - var result = x; - if (Math.abs(x) > taylor_2_bound) { - result -= (x * x * x) / 3; - } - return result; - } - else { - var a = Math.exp(+x), b = Math.exp(-x); - return a === Infinity ? 1 : b === Infinity ? -1 : (a - b) / (a + b); - } - }; - } - - // Inverse hyperbolic function implementations derived from boost special math functions, - // Copyright Eric Ford & Hubert Holin 2001. - - if (typeof Math.asinh === "undefined") { - var asinh = function(x) { - if (x >= +taylor_n_bound) - { - if (x > upper_taylor_n_bound) - { - if (x > upper_taylor_2_bound) - { - // approximation by laurent series in 1/x at 0+ order from -1 to 0 - return Math.log(x) + Math.LN2; - } - else - { - // approximation by laurent series in 1/x at 0+ order from -1 to 1 - return Math.log(x * 2 + (1 / (x * 2))); - } - } - else - { - return Math.log(x + Math.sqrt(x * x + 1)); - } - } - else if (x <= -taylor_n_bound) - { - return -asinh(-x); - } - else - { - // approximation by taylor series in x at 0 up to order 2 - var result = x; - if (Math.abs(x) >= taylor_2_bound) - { - var x3 = x * x * x; - // approximation by taylor series in x at 0 up to order 4 - result -= x3 / 6; - } - return result; - } - }; - Math.asinh = asinh; - } - if (typeof Math.acosh === "undefined") { - Math.acosh = function(x) { - if (x < 1) - { - return NaN; - } - else if (x - 1 >= taylor_n_bound) - { - if (x > upper_taylor_2_bound) - { - // approximation by laurent series in 1/x at 0+ order from -1 to 0 - return Math.log(x) + Math.LN2; - } - else - { - return Math.log(x + Math.sqrt(x * x - 1)); - } - } - else - { - var y = Math.sqrt(x - 1); - // approximation by taylor series in y at 0 up to order 2 - var result = y; - if (y >= taylor_2_bound) - { - var y3 = y * y * y; - // approximation by taylor series in y at 0 up to order 4 - result -= y3 / 12; - } - - return Math.sqrt(2) * result; - } - }; - } - if (typeof Math.atanh === "undefined") { - Math.atanh = function(x) { - if (Math.abs(x) < taylor_n_bound) { - var result = x; - if (Math.abs(x) > taylor_2_bound) { - result += (x * x * x) / 3; - } - return result; - } - return Math.log((1 + x) / (1 - x)) / 2; - }; - } - if (typeof Math.log1p === "undefined") { - Math.log1p = function(x) { - if (Math.abs(x) < taylor_n_bound) { - var x2 = x * x; - var x3 = x2 * x; - var x4 = x3 * x; - // approximation by taylor series in x at 0 up to order 4 - return (-x4 / 4 + x3 / 3 - x2 / 2 + x); - } - return Math.log(x + 1); - }; - } - if (typeof Math.expm1 === "undefined") { - Math.expm1 = function(x) { - if (Math.abs(x) < taylor_n_bound) { - var x2 = x * x; - var x3 = x2 * x; - var x4 = x3 * x; - // approximation by taylor series in x at 0 up to order 4 - return (x4 / 24 + x3 / 6 + x2 / 2 + x); - } - return Math.exp(x) - 1; - }; - } -})(); -if (typeof Math.hypot === "undefined") { - Math.hypot = function() { - var y = 0; - var length = arguments.length; - - for (var i = 0; i < length; i++) { - if (arguments[i] === Infinity || arguments[i] === -Infinity) { - return Infinity; - } - y += arguments[i] * arguments[i]; - } - return Math.sqrt(y); - }; -} -if (typeof Math.log10 === "undefined") { - Math.log10 = function(x) { - return Math.log(x) * Math.LOG10E; - }; -} -if (typeof Math.log2 === "undefined") { - Math.log2 = function(x) { - return Math.log(x) * Math.LOG2E; - }; -} -if (typeof Math.clz32 === "undefined") { - Math.clz32 = (function(log, LN2) { - return function(x) { - var asUint = x >>> 0; - if (asUint === 0) { - return 32; - } - return 31 - (log(asUint) / LN2 | 0) | 0; // the "| 0" acts like math.floor - }; - })(Math.log, Math.LN2); -} - -// For HtmlUnit and PhantomJs -if (typeof ArrayBuffer.isView === "undefined") { - ArrayBuffer.isView = function(a) { - return a != null && a.__proto__ != null && a.__proto__.__proto__ === Int8Array.prototype.__proto__; - }; -} - -if (typeof Array.prototype.fill === "undefined") { - // Polyfill from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill#Polyfill - Object.defineProperty(Array.prototype, 'fill', { - value: function (value) { - - // Steps 1-2. - if (this == null) { - throw new TypeError('this is null or not defined'); - } - - var O = Object(this); - - // Steps 3-5. - var len = O.length >>> 0; - - // Steps 6-7. - var start = arguments[1]; - var relativeStart = start >> 0; - - // Step 8. - var k = relativeStart < 0 ? - Math.max(len + relativeStart, 0) : - Math.min(relativeStart, len); - - // Steps 9-10. - var end = arguments[2]; - var relativeEnd = end === undefined ? - len : end >> 0; - - // Step 11. - var finalValue = relativeEnd < 0 ? - Math.max(len + relativeEnd, 0) : - Math.min(relativeEnd, len); - - // Step 12. - while (k < finalValue) { - O[k] = value; - k++; - } - - // Step 13. - return O; - } - }); -} - -(function() { - function normalizeOffset(offset, length) { - if (offset < 0) return Math.max(0, offset + length); - return Math.min(offset, length); - } - function typedArraySlice(begin, end) { - if (typeof end === "undefined") { - end = this.length; - } - begin = normalizeOffset(begin || 0, this.length); - end = Math.max(begin, normalizeOffset(end, this.length)); - return new this.constructor(this.subarray(begin, end)); - } - - var arrays = [Int8Array, Int16Array, Uint16Array, Int32Array, Float32Array, Float64Array]; - for (var i = 0; i < arrays.length; ++i) { - var TypedArray = arrays[i]; - if (typeof TypedArray.prototype.fill === "undefined") { - Object.defineProperty(TypedArray.prototype, 'fill', { - value: Array.prototype.fill - }); - } - if (typeof TypedArray.prototype.slice === "undefined") { - Object.defineProperty(TypedArray.prototype, 'slice', { - value: typedArraySlice - }); - } - } - - // Patch apply to work with TypedArrays if needed. - try { - (function() {}).apply(null, new Int32Array(0)) - } catch (e) { - var apply = Function.prototype.apply; - Object.defineProperty(Function.prototype, 'apply', { - value: function(self, array) { - return apply.call(this, self, [].slice.call(array)); - } - }); - } - - - // Patch map to work with TypedArrays if needed. - for (var i = 0; i < arrays.length; ++i) { - var TypedArray = arrays[i]; - if (typeof TypedArray.prototype.map === "undefined") { - Object.defineProperty(TypedArray.prototype, 'map', { - value: function(callback, self) { - return [].slice.call(this).map(callback, self); - } - }); - } - } - - // Patch sort to work with TypedArrays if needed. - // TODO: consider to remove following function and replace it with `Kotlin.doubleCompareTo` (see misc.js) - var totalOrderComparator = function (a, b) { - if (a < b) return -1; - if (a > b) return 1; - - if (a === b) { - if (a !== 0) return 0; - - var ia = 1 / a; - return ia === 1 / b ? 0 : (ia < 0 ? -1 : 1); - } - - return a !== a ? (b !== b ? 0 : 1) : -1 - }; - - for (var i = 0; i < arrays.length; ++i) { - var TypedArray = arrays[i]; - if (typeof TypedArray.prototype.sort === "undefined") { - Object.defineProperty(TypedArray.prototype, 'sort', { - value: function(compareFunction) { - return Array.prototype.sort.call(this, compareFunction || totalOrderComparator); - } - }); - } - } -})(); diff --git a/libraries/stdlib/js-v1/src/js/rtti.js b/libraries/stdlib/js-v1/src/js/rtti.js deleted file mode 100644 index 5051352c2ef..00000000000 --- a/libraries/stdlib/js-v1/src/js/rtti.js +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -Kotlin.Kind = { - CLASS: "class", - INTERFACE: "interface", - OBJECT: "object" -}; - -Kotlin.callGetter = function (thisObject, klass, propertyName) { - var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName); - if (propertyDescriptor != null && propertyDescriptor.get != null) { - return propertyDescriptor.get.call(thisObject); - } - - propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); - if (propertyDescriptor != null && "value" in propertyDescriptor) { - return thisObject[propertyName]; - } - - return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName); -}; - -Kotlin.callSetter = function (thisObject, klass, propertyName, value) { - var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName); - if (propertyDescriptor != null && propertyDescriptor.set != null) { - propertyDescriptor.set.call(thisObject, value); - return; - } - - propertyDescriptor = Object.getOwnPropertyDescriptor(thisObject, propertyName); - if (propertyDescriptor != null && "value" in propertyDescriptor) { - thisObject[propertyName] = value; - return - } - - Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value); -}; - -function isInheritanceFromInterface(ctor, iface) { - if (ctor === iface) return true; - - var metadata = ctor.$metadata$; - if (metadata != null) { - var interfaces = metadata.interfaces; - for (var i = 0; i < interfaces.length; i++) { - if (isInheritanceFromInterface(interfaces[i], iface)) { - return true; - } - } - } - - var superPrototype = ctor.prototype != null ? Object.getPrototypeOf(ctor.prototype) : null; - var superConstructor = superPrototype != null ? superPrototype.constructor : null; - return superConstructor != null && isInheritanceFromInterface(superConstructor, iface); -} - -/** - * - * @param {*} object - * @param {Function|Object} klass - * @returns {Boolean} - */ -Kotlin.isType = function (object, klass) { - if (klass === Object) { - switch (typeof object) { - case "string": - case "number": - case "boolean": - case "function": - return true; - default: - return object instanceof Object; - } - } - - if (object == null || klass == null || (typeof object !== 'object' && typeof object !== 'function')) { - return false; - } - - if (typeof klass === "function" && object instanceof klass) { - return true; - } - - var proto = Object.getPrototypeOf(klass); - var constructor = proto != null ? proto.constructor : null; - if (constructor != null && "$metadata$" in constructor) { - var metadata = constructor.$metadata$; - if (metadata.kind === Kotlin.Kind.OBJECT) { - return object === klass; - } - } - - var klassMetadata = klass.$metadata$; - - // In WebKit (JavaScriptCore) for some interfaces from DOM typeof returns "object", nevertheless they can be used in RHS of instanceof - if (klassMetadata == null) { - return object instanceof klass; - } - - if (klassMetadata.kind === Kotlin.Kind.INTERFACE && object.constructor != null) { - return isInheritanceFromInterface(object.constructor, klass); - } - - return false; -}; - -Kotlin.isNumber = function (a) { - return typeof a == "number" || a instanceof Kotlin.Long; -}; - -Kotlin.isChar = function (value) { - return value instanceof Kotlin.BoxedChar -}; - -Kotlin.isComparable = function (value) { - var type = typeof value; - - return type === "string" || - type === "boolean" || - Kotlin.isNumber(value) || - Kotlin.isType(value, Kotlin.kotlin.Comparable); -}; - -Kotlin.isCharSequence = function (value) { - return typeof value === "string" || Kotlin.isType(value, Kotlin.kotlin.CharSequence); -}; \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/kotlin/builtins.kt b/libraries/stdlib/js-v1/src/kotlin/builtins.kt deleted file mode 100644 index abdc0fa3a76..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/builtins.kt +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -@JsName("arrayIterator") -internal fun arrayIterator(array: dynamic, type: String?) = when (type) { - null -> { - val arr: Array = array - object : Iterator { - var index = 0 - override fun hasNext() = index < arr.size - override fun next() = if (index < arr.size) arr[index++] else throw NoSuchElementException("$index") - } - } - "BooleanArray" -> booleanArrayIterator(array) - "ByteArray" -> byteArrayIterator(array) - "ShortArray" -> shortArrayIterator(array) - "CharArray" -> charArrayIterator(array) - "IntArray" -> intArrayIterator(array) - "LongArray" -> longArrayIterator(array) - "FloatArray" -> floatArrayIterator(array) - "DoubleArray" -> doubleArrayIterator(array) - else -> throw IllegalStateException("Unsupported type argument for arrayIterator: $type") -} - -@JsName("booleanArrayIterator") -internal fun booleanArrayIterator(array: BooleanArray) = object : BooleanIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextBoolean() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("byteArrayIterator") -internal fun byteArrayIterator(array: ByteArray) = object : ByteIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextByte() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("shortArrayIterator") -internal fun shortArrayIterator(array: ShortArray) = object : ShortIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextShort() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("charArrayIterator") -internal fun charArrayIterator(array: CharArray) = object : CharIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextChar() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("intArrayIterator") -internal fun intArrayIterator(array: IntArray) = object : IntIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextInt() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("floatArrayIterator") -internal fun floatArrayIterator(array: FloatArray) = object : FloatIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextFloat() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("doubleArrayIterator") -internal fun doubleArrayIterator(array: DoubleArray) = object : DoubleIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextDouble() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("longArrayIterator") -internal fun longArrayIterator(array: LongArray) = object : LongIterator() { - var index = 0 - override fun hasNext() = index < array.size - override fun nextLong() = if (index < array.size) array[index++] else throw NoSuchElementException("$index") -} - -@JsName("PropertyMetadata") -internal class PropertyMetadata(@JsName("callableName") val name: String) - -@JsName("noWhenBranchMatched") -internal fun noWhenBranchMatched(): Nothing = throw NoWhenBranchMatchedException() - -@JsName("subSequence") -internal fun subSequence(c: CharSequence, startIndex: Int, endIndex: Int): CharSequence { - if (c is String) { - return c.substring(startIndex, endIndex) - } else { - return c.asDynamic().`subSequence_vux9f0$`(startIndex, endIndex) - } -} - -@JsName("captureStack") -internal fun captureStack(@Suppress("UNUSED_PARAMETER") baseClass: JsClass, instance: Throwable) { - if (js("Error").captureStackTrace) { - // Using uncropped stack traces due to KT-37563. - // Precise stack traces are implemented in JS IR compiler and stdlib - js("Error").captureStackTrace(instance); - } else { - instance.asDynamic().stack = js("new Error()").stack; - } -} - -@JsName("newThrowable") -internal fun newThrowable(message: String?, cause: Throwable?): Throwable { - val throwable = js("new Error()") - throwable.message = if (jsTypeOf(message) == "undefined") { - if (cause != null) cause.toString() else null - } else { - message - } - throwable.cause = cause - throwable.name = "Throwable" - return throwable -} - -@JsName("BoxedChar") -internal class BoxedChar(val c: Int) : Comparable { - override fun equals(other: Any?): Boolean { - return other is BoxedChar && c == other.c - } - - override fun hashCode(): Int { - return c - } - - override fun toString(): String { - return js("this.c").unsafeCast().toString() - } - - override fun compareTo(other: Int): Int { - return js("this.c - other").unsafeCast() - } - - @JsName("valueOf") - public fun valueOf(): Int { - return c - } -} - -@kotlin.internal.InlineOnly -internal inline fun concat(args: Array): T { - val typed = js("Array")(args.size) - for (i in args.indices) { - val arr = args[i] - if (arr !is Array<*>) { - typed[i] = js("[]").slice.call(arr) - } else { - typed[i] = arr - } - } - return js("[]").concat.apply(js("[]"), typed); -} - -/** Concat regular Array's and TypedArray's into an Array. - */ -@PublishedApi -@JsName("arrayConcat") -@Suppress("UNUSED_PARAMETER") -internal fun arrayConcat(a: T, b: T): T { - return concat(js("arguments")) -} - -/** Concat primitive arrays. Main use: prepare vararg arguments. - * For compatibility with 1.1.0 the arguments may be a mixture of Array's and TypedArray's. - * - * If the first argument is TypedArray (Byte-, Short-, Char-, Int-, Float-, and DoubleArray) returns a TypedArray, otherwise an Array. - * If the first argument has the $type$ property (Boolean-, Char-, and LongArray) copy its value to result.$type$. - * If the first argument is a regular Array without the $type$ property default to arrayConcat. - */ -@PublishedApi -@JsName("primitiveArrayConcat") -@Suppress("UNUSED_PARAMETER") -internal fun primitiveArrayConcat(a: T, b: T): T { - val args: Array = js("arguments") - if (a is Array<*> && a.asDynamic().`$type$` === undefined) { - return concat(args) - } else { - var size = 0 - for (i in args.indices) { - size += args[i].asDynamic().length as Int - } - val result = js("new a.constructor(size)") - kotlin.copyArrayType(a, result) - size = 0 - for (i in args.indices) { - val arr = args[i].asDynamic() - for (j in 0 until arr.length) { - result[size++] = arr[j] - } - } - return result - } -} - -@JsName("booleanArrayOf") -internal fun booleanArrayOf() = withType("BooleanArray", js("[].slice.call(arguments)")) - -@JsName("charArrayOf") -internal fun charArrayOf() = withType("CharArray", js("new Uint16Array(arguments)")) - -@JsName("longArrayOf") -internal fun longArrayOf() = withType("LongArray", js("[].slice.call(arguments)")) - -@JsName("withType") -@kotlin.internal.InlineOnly -internal inline fun withType(type: String, array: dynamic): dynamic { - array.`$type$` = type - return array -} \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/kotlin/charCode_js-v1.kt b/libraries/stdlib/js-v1/src/kotlin/charCode_js-v1.kt deleted file mode 100644 index 35305235e69..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/charCode_js-v1.kt +++ /dev/null @@ -1,18 +0,0 @@ -/* - * 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 kotlin - -/** - * Creates a Char with the specified [code]. - * - * @sample samples.text.Chars.charFromCode - */ -@SinceKotlin("1.5") -@WasExperimental(ExperimentalStdlibApi::class) -@kotlin.internal.InlineOnly -public actual inline fun Char(code: UShort): Char { - return code.toInt().toChar() -} diff --git a/libraries/stdlib/js-v1/src/kotlin/collectionsExternal.kt b/libraries/stdlib/js-v1/src/kotlin/collectionsExternal.kt deleted file mode 100644 index d42c0d8dd41..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/collectionsExternal.kt +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin.collections - -@library("arrayToString") -@Suppress("UNUSED_PARAMETER") -internal fun arrayToString(array: Array<*>): String = definedExternally \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/kotlin/coroutines/CoroutineImpl.kt b/libraries/stdlib/js-v1/src/kotlin/coroutines/CoroutineImpl.kt deleted file mode 100644 index d92052891b8..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/coroutines/CoroutineImpl.kt +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin.coroutines - -import kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED - -@SinceKotlin("1.3") -@JsName("CoroutineImpl") -internal abstract class CoroutineImpl(private val resultContinuation: Continuation) : Continuation { - protected var state = 0 - protected var exceptionState = 0 - protected var result: Any? = null - protected var exception: Throwable? = null - protected var finallyPath: Array? = null - - public override val context: CoroutineContext = resultContinuation.context - - private var intercepted_: Continuation? = null - - public fun intercepted(): Continuation = - intercepted_ - ?: (context[ContinuationInterceptor]?.interceptContinuation(this) ?: this) - .also { intercepted_ = it } - - override fun resumeWith(result: Result) { - var current = this - var currentResult: Any? = result.getOrNull() - var currentException: Throwable? = result.exceptionOrNull() - - // This loop unrolls recursion in current.resumeWith(param) to make saner and shorter stack traces on resume - while (true) { - with(current) { - val completion = resultContinuation - - // Set result and exception fields in the current continuation - if (currentException == null) { - this.result = currentResult - } else { - state = exceptionState - exception = currentException - } - - try { - val outcome = doResume() - if (outcome === COROUTINE_SUSPENDED) return - currentResult = outcome - currentException = null - } catch (exception: dynamic) { // Catch all exceptions - currentResult = null - currentException = exception.unsafeCast() - } - - releaseIntercepted() // this state machine instance is terminating - - if (completion is CoroutineImpl) { - // unrolling recursion via loop - current = completion - } else { - // top-level completion reached -- invoke and return - currentException?.let { - completion.resumeWithException(it) - } ?: completion.resume(currentResult) - return - } - } - } - } - - private fun releaseIntercepted() { - val intercepted = intercepted_ - if (intercepted != null && intercepted !== this) { - context[ContinuationInterceptor]!!.releaseInterceptedContinuation(intercepted) - } - this.intercepted_ = CompletedContinuation // just in case - } - - protected abstract fun doResume(): Any? -} - -internal object CompletedContinuation : Continuation { - override val context: CoroutineContext - get() = error("This continuation is already complete") - - override fun resumeWith(result: Result) { - error("This continuation is already complete") - } - - override fun toString(): String = "This continuation is already complete" -} diff --git a/libraries/stdlib/js-v1/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt b/libraries/stdlib/js-v1/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt deleted file mode 100644 index 014513d3b01..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/coroutines/intrinsics/IntrinsicsJs.kt +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin.coroutines.intrinsics - -import kotlin.coroutines.* -import kotlin.internal.InlineOnly - -/** - * Starts an unintercepted coroutine without a receiver and with result type [T] and executes it until its first suspension. - * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends. - * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception. - * - * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might - * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation - * context is established. - * - * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended - * coroutine using a reference to the suspending function. - */ -@SinceKotlin("1.3") -@InlineOnly -public actual inline fun (suspend () -> T).startCoroutineUninterceptedOrReturn( - completion: Continuation -): Any? = this.asDynamic()(if (this !is CoroutineImpl) createSimpleCoroutineFromSuspendFunction(completion) else completion, false) - -/** - * Starts an unintercepted coroutine with receiver type [R] and result type [T] and executes it until its first suspension. - * Returns the result of the coroutine or throws its exception if it does not suspend or [COROUTINE_SUSPENDED] if it suspends. - * In the latter case, the [completion] continuation is invoked when the coroutine completes with a result or an exception. - * - * The coroutine is started directly in the invoker's thread without going through the [ContinuationInterceptor] that might - * be present in the completion's [CoroutineContext]. It is the invoker's responsibility to ensure that a proper invocation - * context is established. - * - * This function is designed to be used from inside of [suspendCoroutineUninterceptedOrReturn] to resume the execution of the suspended - * coroutine using a reference to the suspending function. - */ -@SinceKotlin("1.3") -@InlineOnly -public actual inline fun (suspend R.() -> T).startCoroutineUninterceptedOrReturn( - receiver: R, - completion: Continuation -): Any? = this.asDynamic()( - receiver, if (this !is CoroutineImpl) createSimpleCoroutineFromSuspendFunction(completion) else completion, false -) - -@InlineOnly -internal actual inline fun (suspend R.(P) -> T).startCoroutineUninterceptedOrReturn( - receiver: R, - param: P, - completion: Continuation -): Any? = this.asDynamic()( - receiver, param, if (this !is CoroutineImpl) createSimpleCoroutineFromSuspendFunction(completion) else completion, false -) - -/** - * Creates unintercepted coroutine without receiver and with result type [T]. - * This function creates a new, fresh instance of suspendable computation every time it is invoked. - * - * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance. - * The [completion] continuation is invoked when coroutine completes with result or exception. - * - * This function returns unintercepted continuation. - * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the - * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext]. - * It is the invoker's responsibility to ensure that a proper invocation context is established. - * Note that [completion] of this function may get invoked in an arbitrary context. - * - * [Continuation.intercepted] can be used to acquire the intercepted continuation. - * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of - * both the coroutine and [completion] happens in the invocation context established by - * [ContinuationInterceptor]. - * - * Repeated invocation of any resume function on the resulting continuation corrupts the - * state machine of the coroutine and may result in arbitrary behaviour or exception. - */ -@SinceKotlin("1.3") -public actual fun (suspend () -> T).createCoroutineUnintercepted( - completion: Continuation -): Continuation = - // Kotlin/JS suspend lambdas have an extra parameter `suspended` - if (this.asDynamic().length == 2) { - // When `suspended` is true the continuation is created, but not executed - this.asDynamic()(completion, true) - } else { - createCoroutineFromSuspendFunction(completion) { - this.asDynamic()(completion) - } - } - -/** - * Creates unintercepted coroutine with receiver type [R] and result type [T]. - * This function creates a new, fresh instance of suspendable computation every time it is invoked. - * - * To start executing the created coroutine, invoke `resume(Unit)` on the returned [Continuation] instance. - * The [completion] continuation is invoked when coroutine completes with result or exception. - * - * This function returns unintercepted continuation. - * Invocation of `resume(Unit)` starts coroutine immediately in the invoker's call stack without going through the - * [ContinuationInterceptor] that might be present in the completion's [CoroutineContext]. - * It is the invoker's responsibility to ensure that a proper invocation context is established. - * Note that [completion] of this function may get invoked in an arbitrary context. - * - * [Continuation.intercepted] can be used to acquire the intercepted continuation. - * Invocation of `resume(Unit)` on intercepted continuation guarantees that execution of - * both the coroutine and [completion] happens in the invocation context established by - * [ContinuationInterceptor]. - * - * Repeated invocation of any resume function on the resulting continuation corrupts the - * state machine of the coroutine and may result in arbitrary behaviour or exception. - */ -@SinceKotlin("1.3") -public actual fun (suspend R.() -> T).createCoroutineUnintercepted( - receiver: R, - completion: Continuation -): Continuation = - // Kotlin/JS suspend lambdas have an extra parameter `suspended` - if (this.asDynamic().length == 3) { - // When `suspended` is true the continuation is created, but not executed - this.asDynamic()(receiver, completion, true) - } else { - createCoroutineFromSuspendFunction(completion) { - this.asDynamic()(receiver, completion) - } - } - -/** - * Intercepts this continuation with [ContinuationInterceptor]. - * - * This function shall be used on the immediate result of [createCoroutineUnintercepted] or [suspendCoroutineUninterceptedOrReturn], - * in which case it checks for [ContinuationInterceptor] in the continuation's [context][Continuation.context], - * invokes [ContinuationInterceptor.interceptContinuation], caches and returns the result. - * - * If this function is invoked on other [Continuation] instances it returns `this` continuation unchanged. - */ -@SinceKotlin("1.3") -public actual fun Continuation.intercepted(): Continuation = - (this as? CoroutineImpl)?.intercepted() ?: this - - -private inline fun createCoroutineFromSuspendFunction( - completion: Continuation, - crossinline block: () -> Any? -): Continuation { - @Suppress("UNCHECKED_CAST") - return object : CoroutineImpl(completion as Continuation) { - override fun doResume(): Any? { - exception?.let { throw it } - return block() - } - } -} - -@PublishedApi -internal fun createSimpleCoroutineFromSuspendFunction( - completion: Continuation -): CoroutineImpl = object : CoroutineImpl(@Suppress("UNCHECKED_CAST") (completion as Continuation)) { - override fun doResume(): Any? { - if (exception != null) throw exception as Throwable - return result - } -} diff --git a/libraries/stdlib/js-v1/src/kotlin/currentBeMisc.kt b/libraries/stdlib/js-v1/src/kotlin/currentBeMisc.kt deleted file mode 100644 index a7741f1ef22..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/currentBeMisc.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin.js - -// Mirrors signature from JS IR BE -// Used for js.translator/testData/box/number/mulInt32.kt -@library -@JsName("imulEmulated") -@Suppress("UNUSED_PARAMETER") -internal fun imul(x: Int, y: Int): Int = definedExternally - -@Suppress("NOTHING_TO_INLINE") -internal inline fun isArrayish(o: dynamic) = js("Kotlin").isArrayish(o) diff --git a/libraries/stdlib/js-v1/src/kotlin/exceptions.kt b/libraries/stdlib/js-v1/src/kotlin/exceptions.kt deleted file mode 100644 index e3c11acf4c2..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/exceptions.kt +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin - -// NOTE: Do not author your exceptions as they are written in this file, instead use this template: -/* -public open class MyException : Exception { - constructor() : super() - constructor(message: String?) : super(message) - constructor(message: String?, cause: Throwable?) : super(message, cause) - constructor(cause: Throwable?) : super(cause) -} -*/ - - -// TODO: remove primary constructors, make all secondary KT-22055 - -@Suppress("USELESS_ELVIS_RIGHT_IS_NULL") -public actual open class Error actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - -@Suppress("USELESS_ELVIS_RIGHT_IS_NULL") -public actual open class Exception actual constructor(message: String?, cause: Throwable?) : Throwable(message, cause ?: null) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - -public actual open class RuntimeException actual constructor(message: String?, cause: Throwable?) : Exception(message, cause) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - -public actual open class IllegalArgumentException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - -public actual open class IllegalStateException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - -public actual open class IndexOutOfBoundsException actual constructor(message: String?) : RuntimeException(message) { - actual constructor() : this(null) -} - -public actual open class ConcurrentModificationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - -public actual open class UnsupportedOperationException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - - -public actual open class NumberFormatException actual constructor(message: String?) : IllegalArgumentException(message) { - actual constructor() : this(null) -} - - -public actual open class NullPointerException actual constructor(message: String?) : RuntimeException(message) { - actual constructor() : this(null) -} - -public actual open class ClassCastException actual constructor(message: String?) : RuntimeException(message) { - actual constructor() : this(null) -} - -public actual open class AssertionError -@SinceKotlin("1.4") -actual constructor(message: String?, cause: Throwable?) : Error(message, cause) { - actual constructor() : this(null) - constructor(message: String?) : this(message, null) - actual constructor(message: Any?) : this(message.toString(), message as? Throwable) -} - -public actual open class NoSuchElementException actual constructor(message: String?) : RuntimeException(message) { - actual constructor() : this(null) -} - -@SinceKotlin("1.3") -public actual open class ArithmeticException actual constructor(message: String?) : RuntimeException(message) { - actual constructor() : this(null) -} - -public actual open class NoWhenBranchMatchedException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} - -public actual open class UninitializedPropertyAccessException actual constructor(message: String?, cause: Throwable?) : RuntimeException(message, cause) { - actual constructor() : this(null, null) - actual constructor(message: String?) : this(message, null) - actual constructor(cause: Throwable?) : this(undefined, cause) -} diff --git a/libraries/stdlib/js-v1/src/kotlin/jsOperators.kt b/libraries/stdlib/js-v1/src/kotlin/jsOperators.kt deleted file mode 100644 index 2c9c4adb780..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/jsOperators.kt +++ /dev/null @@ -1,18 +0,0 @@ -/* - * 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. - */ - - -@file:Suppress("UNUSED_PARAMETER") - -package kotlin.js - -@kotlin.internal.InlineOnly -internal inline fun jsDeleteProperty(obj: Any, property: Any) { - js("delete obj[property]") -} - -@kotlin.internal.InlineOnly -internal inline fun jsBitwiseOr(lhs: Any?, rhs: Any?): Int = - js("lhs | rhs").unsafeCast() \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/kotlin/jsTypeOf.kt b/libraries/stdlib/js-v1/src/kotlin/jsTypeOf.kt deleted file mode 100644 index bc58cbf2a32..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/jsTypeOf.kt +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin.js - -/** - * Function corresponding to JavaScript's `typeof` operator - */ -@kotlin.internal.InlineOnly -@Suppress("UNUSED_PARAMETER") -public inline fun jsTypeOf(a: Any?): String = js("typeof a") diff --git a/libraries/stdlib/js-v1/src/kotlin/kotlin.kt b/libraries/stdlib/js-v1/src/kotlin/kotlin.kt deleted file mode 100644 index 12e2c378939..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/kotlin.kt +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2010-2018 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. - */ - -@file:Suppress("UNUSED_PARAMETER", "NOTHING_TO_INLINE") - -package kotlin - -/** - * Returns an empty array of the specified type [T]. - */ -public inline fun emptyArray(): Array = js("[]") - -@library -public fun arrayOf(vararg elements: T): Array = definedExternally - -@library -public fun doubleArrayOf(vararg elements: Double): DoubleArray = definedExternally - -@library -public fun floatArrayOf(vararg elements: Float): FloatArray = definedExternally - -@library -public fun longArrayOf(vararg elements: Long): LongArray = definedExternally - -@library -public fun intArrayOf(vararg elements: Int): IntArray = definedExternally - -@library -public fun charArrayOf(vararg elements: Char): CharArray = definedExternally - -@library -public fun shortArrayOf(vararg elements: Short): ShortArray = definedExternally - -@library -public fun byteArrayOf(vararg elements: Byte): ByteArray = definedExternally - -@library -public fun booleanArrayOf(vararg elements: Boolean): BooleanArray = definedExternally - -/** - * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer]. - */ -public actual fun lazy(initializer: () -> T): Lazy = UnsafeLazyImpl(initializer) - -/** - * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer]. - * - * The [mode] parameter is ignored. */ -public actual fun lazy(mode: LazyThreadSafetyMode, initializer: () -> T): Lazy = UnsafeLazyImpl(initializer) - -/** - * Creates a new instance of the [Lazy] that uses the specified initialization function [initializer]. - * - * The [lock] parameter is ignored. - */ -@Deprecated("Synchronization on Any? object is not supported.", ReplaceWith("lazy(initializer)")) -@DeprecatedSinceKotlin(warningSince = "1.9") -public actual fun lazy(lock: Any?, initializer: () -> T): Lazy = UnsafeLazyImpl(initializer) - - -internal fun fillFrom(src: dynamic, dst: dynamic): dynamic { - val srcLen: Int = src.length - val dstLen: Int = dst.length - var index: Int = 0 - while (index < srcLen && index < dstLen) dst[index] = src[index++] - return dst -} - - -internal fun arrayCopyResize(source: dynamic, newSize: Int, defaultValue: Any?): dynamic { - val result = source.slice(0, newSize) - copyArrayType(source, result) - var index: Int = source.length - if (newSize > index) { - result.length = newSize - while (index < newSize) result[index++] = defaultValue - } - return result -} - -internal fun arrayPlusCollection(array: dynamic, collection: Collection): dynamic { - val result = array.slice() - result.length += collection.size - copyArrayType(array, result) - var index: Int = array.length - for (element in collection) result[index++] = element - return result -} - -internal fun fillFromCollection(dst: dynamic, startIndex: Int, collection: Collection): dynamic { - var index = startIndex - for (element in collection) dst[index++] = element - return dst -} - -internal inline fun copyArrayType(from: dynamic, to: dynamic) { - if (from.`$type$` !== undefined) { - to.`$type$` = from.`$type$` - } -} - -internal inline fun jsIsType(obj: dynamic, jsClass: dynamic) = js("Kotlin").isType(obj, jsClass) \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/kotlin/math_js-v1.kt b/libraries/stdlib/js-v1/src/kotlin/math_js-v1.kt deleted file mode 100644 index 59a45a1efab..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/math_js-v1.kt +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin.math - -/** - * Returns this value with the sign bit same as of the [sign] value. - * - * If [sign] is `NaN` the sign of the result is undefined. - */ -@SinceKotlin("1.2") -public actual fun Double.withSign(sign: Double): Double { - val thisSignBit = js("Kotlin").doubleSignBit(this).unsafeCast() - val newSignBit = js("Kotlin").doubleSignBit(sign).unsafeCast() - return if (thisSignBit == newSignBit) this else -this -} \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/kotlin/numbers_js-v1.kt b/libraries/stdlib/js-v1/src/kotlin/numbers_js-v1.kt deleted file mode 100644 index 54ca41a8bca..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/numbers_js-v1.kt +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2010-2018 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 kotlin - - -/** - * Returns a bit representation of the specified floating-point value as [Long] - * according to the IEEE 754 floating-point "double format" bit layout. - */ -@SinceKotlin("1.2") -@library("doubleToBits") -public actual fun Double.toBits(): Long = definedExternally - -/** - * Returns a bit representation of the specified floating-point value as [Long] - * according to the IEEE 754 floating-point "double format" bit layout, - * preserving `NaN` values exact layout. - */ -@SinceKotlin("1.2") -@library("doubleToRawBits") -public actual fun Double.toRawBits(): Long = definedExternally - -/** - * Returns the [Double] value corresponding to a given bit representation. - */ -@SinceKotlin("1.2") -@kotlin.internal.InlineOnly -public actual inline fun Double.Companion.fromBits(bits: Long): Double = js("Kotlin").doubleFromBits(bits).unsafeCast() - -/** - * Returns a bit representation of the specified floating-point value as [Int] - * according to the IEEE 754 floating-point "single format" bit layout. - * - * Note that in Kotlin/JS [Float] range is wider than "single format" bit layout can represent, - * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back. - */ -@SinceKotlin("1.2") -@library("floatToBits") -public actual fun Float.toBits(): Int = definedExternally - -/** - * Returns a bit representation of the specified floating-point value as [Int] - * according to the IEEE 754 floating-point "single format" bit layout, - * preserving `NaN` values exact layout. - * - * Note that in Kotlin/JS [Float] range is wider than "single format" bit layout can represent, - * so some [Float] values may overflow, underflow or loose their accuracy after conversion to bits and back. - */ -@SinceKotlin("1.2") -@library("floatToRawBits") -public actual fun Float.toRawBits(): Int = definedExternally - -/** - * Returns the [Float] value corresponding to a given bit representation. - */ -@SinceKotlin("1.2") -@kotlin.internal.InlineOnly -public actual inline fun Float.Companion.fromBits(bits: Int): Float = js("Kotlin").floatFromBits(bits).unsafeCast() - - -@Suppress("NOTHING_TO_INLINE") -internal inline fun Long(low: Int, high: Int) = js("Kotlin").Long.fromBits(low, high).unsafeCast() -internal inline val Long.low: Int get() = this.asDynamic().getLowBits().unsafeCast() -internal inline val Long.high: Int get() = this.asDynamic().getHighBits().unsafeCast() diff --git a/libraries/stdlib/js-v1/src/kotlin/reflection_js-v1.kt b/libraries/stdlib/js-v1/src/kotlin/reflection_js-v1.kt deleted file mode 100644 index 298d73a2aba..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/reflection_js-v1.kt +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright 2010-2020 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. - */ - -import kotlin.reflect.KClass - -@PublishedApi -internal fun KClass<*>.findAssociatedObject(@Suppress("UNUSED_PARAMETER") annotationClass: KClass): Any? { - // This API is not supported in js-v1. Return `null` to be source-compatible with js-ir. - return null -} diff --git a/libraries/stdlib/js-v1/src/kotlin/text/numberConversions_js-v1.kt b/libraries/stdlib/js-v1/src/kotlin/text/numberConversions_js-v1.kt deleted file mode 100644 index f3458933f04..00000000000 --- a/libraries/stdlib/js-v1/src/kotlin/text/numberConversions_js-v1.kt +++ /dev/null @@ -1,14 +0,0 @@ -/* - * Copyright 2010-2019 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 kotlin.text - -/** - * Returns a string representation of this [Long] value in the specified [radix]. - * - * @throws IllegalArgumentException when [radix] is not a valid radix for number to string conversion. - */ -@SinceKotlin("1.2") -public actual fun Long.toString(radix: Int): String = asDynamic().toString(checkRadix(radix)) \ No newline at end of file diff --git a/libraries/stdlib/js-v1/src/wrapper.js b/libraries/stdlib/js-v1/src/wrapper.js deleted file mode 100644 index 41b284acc64..00000000000 --- a/libraries/stdlib/js-v1/src/wrapper.js +++ /dev/null @@ -1,16 +0,0 @@ -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - define('kotlin', ['exports'], factory); - } - else if (typeof exports === 'object') { - factory(module.exports); - } - else { - root.kotlin = {}; - factory(root.kotlin); - } -}(this, function (Kotlin) { - var _ = Kotlin; - - insertContent(); -})); diff --git a/libraries/stdlib/js-v1/test/core/BuiltinCompanionJsTest.kt b/libraries/stdlib/js-v1/test/core/BuiltinCompanionJsTest.kt deleted file mode 100644 index f2f5095cc40..00000000000 --- a/libraries/stdlib/js-v1/test/core/BuiltinCompanionJsTest.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2010-2018 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.js - -import kotlin.test.* - -class BuiltinCompanionJsTest { - - @Test fun longMinMaxValues() { - assertEquals(js("Kotlin.Long.MIN_VALUE"), Long.MIN_VALUE) - assertEquals(js("Kotlin.Long.MAX_VALUE"), Long.MAX_VALUE) - } - - @Test fun doubleMinMaxValues() { - assertEquals(js("Number.MIN_VALUE"), Double.MIN_VALUE) - assertEquals(js("Number.MAX_VALUE"), Double.MAX_VALUE) - assertEquals(js("Number.POSITIVE_INFINITY"), Double.POSITIVE_INFINITY) - assertEquals(js("Number.NEGATIVE_INFINITY"), Double.NEGATIVE_INFINITY) - } - - @Test fun floatMinMaxValues() { - assertEquals(js("Number.POSITIVE_INFINITY"), Float.POSITIVE_INFINITY) - assertEquals(js("Number.NEGATIVE_INFINITY"), Float.NEGATIVE_INFINITY) - } -} \ No newline at end of file diff --git a/libraries/stdlib/js-v1/web/index.html b/libraries/stdlib/js-v1/web/index.html deleted file mode 100644 index ae510dc8c0b..00000000000 --- a/libraries/stdlib/js-v1/web/index.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - Kotlin Standard Library Test Suite - - - - - - -
- - - - - - - - - - - - - - \ No newline at end of file diff --git a/libraries/stdlib/js/src/generated/.gitattributes b/libraries/stdlib/js/src/generated/.gitattributes deleted file mode 100644 index d0496f1a266..00000000000 --- a/libraries/stdlib/js/src/generated/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.kt eol=lf diff --git a/libraries/stdlib/js/src/generated/_ArraysJs.kt b/libraries/stdlib/js/src/generated/_ArraysJs.kt deleted file mode 100644 index 1b4c3b51df1..00000000000 --- a/libraries/stdlib/js/src/generated/_ArraysJs.kt +++ /dev/null @@ -1,1887 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.collections - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -import kotlin.js.* -import primitiveArrayConcat -import withType -import kotlin.ranges.contains -import kotlin.ranges.reversed - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun Array.elementAt(index: Int): T { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun ByteArray.elementAt(index: Int): Byte { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun ShortArray.elementAt(index: Int): Short { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun IntArray.elementAt(index: Int): Int { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun LongArray.elementAt(index: Int): Long { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun FloatArray.elementAt(index: Int): Float { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun DoubleArray.elementAt(index: Int): Double { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun BooleanArray.elementAt(index: Int): Boolean { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun CharArray.elementAt(index: Int): Char { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns a [List] that wraps the original array. - */ -public actual fun Array.asList(): List { - return ArrayList(this.unsafeCast>()) -} - -/** - * Returns a [List] that wraps the original array. - */ -@kotlin.internal.InlineOnly -public actual inline fun ByteArray.asList(): List { - return this.unsafeCast>().asList() -} - -/** - * Returns a [List] that wraps the original array. - */ -@kotlin.internal.InlineOnly -public actual inline fun ShortArray.asList(): List { - return this.unsafeCast>().asList() -} - -/** - * Returns a [List] that wraps the original array. - */ -@kotlin.internal.InlineOnly -public actual inline fun IntArray.asList(): List { - return this.unsafeCast>().asList() -} - -/** - * Returns a [List] that wraps the original array. - */ -@kotlin.internal.InlineOnly -public actual inline fun LongArray.asList(): List { - return this.unsafeCast>().asList() -} - -/** - * Returns a [List] that wraps the original array. - */ -@kotlin.internal.InlineOnly -public actual inline fun FloatArray.asList(): List { - return this.unsafeCast>().asList() -} - -/** - * Returns a [List] that wraps the original array. - */ -@kotlin.internal.InlineOnly -public actual inline fun DoubleArray.asList(): List { - return this.unsafeCast>().asList() -} - -/** - * Returns a [List] that wraps the original array. - */ -@kotlin.internal.InlineOnly -public actual inline fun BooleanArray.asList(): List { - return this.unsafeCast>().asList() -} - -/** - * Returns a [List] that wraps the original array. - */ -public actual fun CharArray.asList(): List { - return object : AbstractList(), RandomAccess { - override val size: Int get() = this@asList.size - override fun isEmpty(): Boolean = this@asList.isEmpty() - override fun contains(element: Char): Boolean = this@asList.contains(element) - override fun get(index: Int): Char { - AbstractList.checkElementIndex(index, size) - return this@asList[index] - } - override fun indexOf(element: Char): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is Char) return -1 - return this@asList.indexOf(element) - } - override fun lastIndexOf(element: Char): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is Char) return -1 - return this@asList.lastIndexOf(element) - } - } -} - -/** - * Returns `true` if the two specified arrays are *deeply* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * If two corresponding elements are nested arrays, they are also compared deeply. - * If any of arrays contains itself on any nesting level the behavior is undefined. - * - * The elements of other types are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.1") -@kotlin.internal.LowPriorityInOverloadResolution -public actual infix fun Array.contentDeepEquals(other: Array): Boolean { - return this.contentDeepEquals(other) -} - -/** - * Returns `true` if the two specified arrays are *deeply* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The specified arrays are also considered deeply equal if both are `null`. - * - * If two corresponding elements are nested arrays, they are also compared deeply. - * If any of arrays contains itself on any nesting level the behavior is undefined. - * - * The elements of other types are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayDeepEquals") -public actual infix fun Array?.contentDeepEquals(other: Array?): Boolean { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - * Nested arrays are treated as lists too. - * - * If any of arrays contains itself on any nesting level the behavior is undefined. - */ -@SinceKotlin("1.1") -@kotlin.internal.LowPriorityInOverloadResolution -public actual fun Array.contentDeepHashCode(): Int { - return this.contentDeepHashCode() -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - * Nested arrays are treated as lists too. - * - * If any of arrays contains itself on any nesting level the behavior is undefined. - */ -@SinceKotlin("1.4") -@library("arrayDeepHashCode") -public actual fun Array?.contentDeepHashCode(): Int { - definedExternally -} - -/** - * Returns a string representation of the contents of this array as if it is a [List]. - * Nested arrays are treated as lists too. - * - * If any of arrays contains itself on any nesting level that reference - * is rendered as `"[...]"` to prevent recursion. - * - * @sample samples.collections.Arrays.ContentOperations.contentDeepToString - */ -@SinceKotlin("1.1") -@kotlin.internal.LowPriorityInOverloadResolution -public actual fun Array.contentDeepToString(): String { - return this.contentDeepToString() -} - -/** - * Returns a string representation of the contents of this array as if it is a [List]. - * Nested arrays are treated as lists too. - * - * If any of arrays contains itself on any nesting level that reference - * is rendered as `"[...]"` to prevent recursion. - * - * @sample samples.collections.Arrays.ContentOperations.contentDeepToString - */ -@SinceKotlin("1.4") -@library("arrayDeepToString") -public actual fun Array?.contentDeepToString(): String { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun Array?.contentEquals(other: Array?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun ByteArray?.contentEquals(other: ByteArray?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun ShortArray?.contentEquals(other: ShortArray?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun IntArray?.contentEquals(other: IntArray?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun LongArray?.contentEquals(other: LongArray?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun FloatArray?.contentEquals(other: FloatArray?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun DoubleArray?.contentEquals(other: DoubleArray?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun BooleanArray?.contentEquals(other: BooleanArray?): Boolean { - definedExternally -} - -/** - * Returns `true` if the two specified arrays are *structurally* equal to one another, - * i.e. contain the same number of the same elements in the same order. - * - * The elements are compared for equality with the [equals][Any.equals] function. - * For floating point numbers it means that `NaN` is equal to itself and `-0.0` is not equal to `0.0`. - */ -@SinceKotlin("1.4") -@library("arrayEquals") -public actual infix fun CharArray?.contentEquals(other: CharArray?): Boolean { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun Array?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun ByteArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun ShortArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun IntArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun LongArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun FloatArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun DoubleArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun BooleanArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a hash code based on the contents of this array as if it is [List]. - */ -@SinceKotlin("1.4") -@library("arrayHashCode") -public actual fun CharArray?.contentHashCode(): Int { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun Array?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun ByteArray?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun ShortArray?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun IntArray?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun LongArray?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun FloatArray?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun DoubleArray?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun BooleanArray?.contentToString(): String { - definedExternally -} - -/** - * Returns a string representation of the contents of the specified array as if it is [List]. - * - * @sample samples.collections.Arrays.ContentOperations.contentToString - */ -@SinceKotlin("1.4") -@library("arrayToString") -public actual fun CharArray?.contentToString(): String { - definedExternally -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun Array.copyInto(destination: Array, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): Array { - arrayCopy(this, destination, destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun ByteArray.copyInto(destination: ByteArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ByteArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun ShortArray.copyInto(destination: ShortArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): ShortArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun IntArray.copyInto(destination: IntArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): IntArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun LongArray.copyInto(destination: LongArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): LongArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun FloatArray.copyInto(destination: FloatArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): FloatArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun DoubleArray.copyInto(destination: DoubleArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): DoubleArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun BooleanArray.copyInto(destination: BooleanArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): BooleanArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Copies this array or its subrange into the [destination] array and returns that array. - * - * It's allowed to pass the same array in the [destination] and even specify the subrange so that it overlaps with the destination range. - * - * @param destination the array to copy to. - * @param destinationOffset the position in the [destination] array to copy to, 0 by default. - * @param startIndex the beginning (inclusive) of the subrange to copy, 0 by default. - * @param endIndex the end (exclusive) of the subrange to copy, size of this array by default. - * - * @throws IndexOutOfBoundsException or [IllegalArgumentException] when [startIndex] or [endIndex] is out of range of this array indices or when `startIndex > endIndex`. - * @throws IndexOutOfBoundsException when the subrange doesn't fit into the [destination] array starting at the specified [destinationOffset], - * or when that index is out of the [destination] array indices range. - * - * @return the [destination] array. - */ -@SinceKotlin("1.3") -@kotlin.internal.InlineOnly -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual inline fun CharArray.copyInto(destination: CharArray, destinationOffset: Int = 0, startIndex: Int = 0, endIndex: Int = size): CharArray { - arrayCopy(this.unsafeCast>(), destination.unsafeCast>(), destinationOffset, startIndex, endIndex) - return destination -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -@Suppress("ACTUAL_WITHOUT_EXPECT", "NOTHING_TO_INLINE") -public actual inline fun Array.copyOf(): Array { - return this.asDynamic().slice() -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline fun ByteArray.copyOf(): ByteArray { - return this.asDynamic().slice() -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline fun ShortArray.copyOf(): ShortArray { - return this.asDynamic().slice() -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline fun IntArray.copyOf(): IntArray { - return this.asDynamic().slice() -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -public actual fun LongArray.copyOf(): LongArray { - return withType("LongArray", this.asDynamic().slice()) -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline fun FloatArray.copyOf(): FloatArray { - return this.asDynamic().slice() -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline fun DoubleArray.copyOf(): DoubleArray { - return this.asDynamic().slice() -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -public actual fun BooleanArray.copyOf(): BooleanArray { - return withType("BooleanArray", this.asDynamic().slice()) -} - -/** - * Returns new array which is a copy of the original array. - * - * @sample samples.collections.Arrays.CopyOfOperations.copyOf - */ -public actual fun CharArray.copyOf(): CharArray { - return withType("CharArray", this.asDynamic().slice()) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with zero values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun ByteArray.copyOf(newSize: Int): ByteArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return fillFrom(this, ByteArray(newSize)) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with zero values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun ShortArray.copyOf(newSize: Int): ShortArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return fillFrom(this, ShortArray(newSize)) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with zero values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun IntArray.copyOf(newSize: Int): IntArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return fillFrom(this, IntArray(newSize)) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with zero values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun LongArray.copyOf(newSize: Int): LongArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return withType("LongArray", arrayCopyResize(this, newSize, 0L)) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with zero values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun FloatArray.copyOf(newSize: Int): FloatArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return fillFrom(this, FloatArray(newSize)) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with zero values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with zero values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun DoubleArray.copyOf(newSize: Int): DoubleArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return fillFrom(this, DoubleArray(newSize)) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with `false` values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `false` values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun BooleanArray.copyOf(newSize: Int): BooleanArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return withType("BooleanArray", arrayCopyResize(this, newSize, false)) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with null char (`\u0000`) values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with null char (`\u0000`) values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizedPrimitiveCopyOf - */ -public actual fun CharArray.copyOf(newSize: Int): CharArray { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return withType("CharArray", fillFrom(this, CharArray(newSize))) -} - -/** - * Returns new array which is a copy of the original array, resized to the given [newSize]. - * The copy is either truncated or padded at the end with `null` values if necessary. - * - * - If [newSize] is less than the size of the original array, the copy array is truncated to the [newSize]. - * - If [newSize] is greater than the size of the original array, the extra elements in the copy array are filled with `null` values. - * - * @sample samples.collections.Arrays.CopyOfOperations.resizingCopyOf - */ -@Suppress("ACTUAL_WITHOUT_EXPECT") -public actual fun Array.copyOf(newSize: Int): Array { - require(newSize >= 0) { "Invalid new array size: $newSize." } - return arrayCopyResize(this, newSize, null) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@Suppress("ACTUAL_WITHOUT_EXPECT") -public actual fun Array.copyOfRange(fromIndex: Int, toIndex: Int): Array { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return this.asDynamic().slice(fromIndex, toIndex) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun ByteArray.copyOfRange(fromIndex: Int, toIndex: Int): ByteArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return this.asDynamic().slice(fromIndex, toIndex) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun ShortArray.copyOfRange(fromIndex: Int, toIndex: Int): ShortArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return this.asDynamic().slice(fromIndex, toIndex) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun IntArray.copyOfRange(fromIndex: Int, toIndex: Int): IntArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return this.asDynamic().slice(fromIndex, toIndex) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun LongArray.copyOfRange(fromIndex: Int, toIndex: Int): LongArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return withType("LongArray", this.asDynamic().slice(fromIndex, toIndex)) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun FloatArray.copyOfRange(fromIndex: Int, toIndex: Int): FloatArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return this.asDynamic().slice(fromIndex, toIndex) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun DoubleArray.copyOfRange(fromIndex: Int, toIndex: Int): DoubleArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return this.asDynamic().slice(fromIndex, toIndex) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun BooleanArray.copyOfRange(fromIndex: Int, toIndex: Int): BooleanArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return withType("BooleanArray", this.asDynamic().slice(fromIndex, toIndex)) -} - -/** - * Returns a new array which is a copy of the specified range of the original array. - * - * @param fromIndex the start of the range (inclusive) to copy. - * @param toIndex the end of the range (exclusive) to copy. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -public actual fun CharArray.copyOfRange(fromIndex: Int, toIndex: Int): CharArray { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - return withType("CharArray", this.asDynamic().slice(fromIndex, toIndex)) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun Array.fill(element: T, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun ByteArray.fill(element: Byte, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun ShortArray.fill(element: Short, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun IntArray.fill(element: Int, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun LongArray.fill(element: Long, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun FloatArray.fill(element: Float, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun DoubleArray.fill(element: Double, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun BooleanArray.fill(element: Boolean, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - nativeFill(element, fromIndex, toIndex) -} - -/** - * Fills this array or its subrange with the specified [element] value. - * - * @param fromIndex the start of the range (inclusive) to fill, 0 by default. - * @param toIndex the end of the range (exclusive) to fill, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.3") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun CharArray.fill(element: Char, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - // We need to call [Char.code] here to eliminate Char-boxing with the new JS function inlining logic - nativeFill(element.code, fromIndex, toIndex) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("ACTUAL_WITHOUT_EXPECT", "NOTHING_TO_INLINE") -public actual inline operator fun Array.plus(element: T): Array { - return this.asDynamic().concat(arrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun ByteArray.plus(element: Byte): ByteArray { - return plus(byteArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun ShortArray.plus(element: Short): ShortArray { - return plus(shortArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun IntArray.plus(element: Int): IntArray { - return plus(intArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun LongArray.plus(element: Long): LongArray { - return plus(longArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun FloatArray.plus(element: Float): FloatArray { - return plus(floatArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun DoubleArray.plus(element: Double): DoubleArray { - return plus(doubleArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun BooleanArray.plus(element: Boolean): BooleanArray { - return plus(booleanArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun CharArray.plus(element: Char): CharArray { - return plus(charArrayOf(element)) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -@Suppress("ACTUAL_WITHOUT_EXPECT") -public actual operator fun Array.plus(elements: Collection): Array { - return arrayPlusCollection(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun ByteArray.plus(elements: Collection): ByteArray { - return fillFromCollection(this.copyOf(size + elements.size), this.size, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun ShortArray.plus(elements: Collection): ShortArray { - return fillFromCollection(this.copyOf(size + elements.size), this.size, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun IntArray.plus(elements: Collection): IntArray { - return fillFromCollection(this.copyOf(size + elements.size), this.size, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun LongArray.plus(elements: Collection): LongArray { - return arrayPlusCollection(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun FloatArray.plus(elements: Collection): FloatArray { - return fillFromCollection(this.copyOf(size + elements.size), this.size, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun DoubleArray.plus(elements: Collection): DoubleArray { - return fillFromCollection(this.copyOf(size + elements.size), this.size, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun BooleanArray.plus(elements: Collection): BooleanArray { - return arrayPlusCollection(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] collection. - */ -public actual operator fun CharArray.plus(elements: Collection): CharArray { - return fillFromCollection(this.copyOf(size + elements.size), this.size, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("ACTUAL_WITHOUT_EXPECT", "NOTHING_TO_INLINE") -public actual inline operator fun Array.plus(elements: Array): Array { - return this.asDynamic().concat(elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun ByteArray.plus(elements: ByteArray): ByteArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun ShortArray.plus(elements: ShortArray): ShortArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun IntArray.plus(elements: IntArray): IntArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun LongArray.plus(elements: LongArray): LongArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun FloatArray.plus(elements: FloatArray): FloatArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun DoubleArray.plus(elements: DoubleArray): DoubleArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun BooleanArray.plus(elements: BooleanArray): BooleanArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then all elements of the given [elements] array. - */ -@Suppress("NOTHING_TO_INLINE") -public actual inline operator fun CharArray.plus(elements: CharArray): CharArray { - return primitiveArrayConcat(this, elements) -} - -/** - * Returns an array containing all elements of the original array and then the given [element]. - */ -@Suppress("ACTUAL_WITHOUT_EXPECT", "NOTHING_TO_INLINE") -public actual inline fun Array.plusElement(element: T): Array { - return this.asDynamic().concat(arrayOf(element)) -} - -/** - * Sorts the array in-place. - * - * @sample samples.collections.Arrays.Sorting.sortArray - */ -@library("primitiveArraySort") -public actual fun IntArray.sort(): Unit { - definedExternally -} - -/** - * Sorts the array in-place. - * - * @sample samples.collections.Arrays.Sorting.sortArray - */ -public actual fun LongArray.sort(): Unit { - @Suppress("DEPRECATION") - if (size > 1) sort { a: Long, b: Long -> a.compareTo(b) } -} - -/** - * Sorts the array in-place. - * - * @sample samples.collections.Arrays.Sorting.sortArray - */ -@library("primitiveArraySort") -public actual fun ByteArray.sort(): Unit { - definedExternally -} - -/** - * Sorts the array in-place. - * - * @sample samples.collections.Arrays.Sorting.sortArray - */ -@library("primitiveArraySort") -public actual fun ShortArray.sort(): Unit { - definedExternally -} - -/** - * Sorts the array in-place. - * - * @sample samples.collections.Arrays.Sorting.sortArray - */ -@library("primitiveArraySort") -public actual fun DoubleArray.sort(): Unit { - definedExternally -} - -/** - * Sorts the array in-place. - * - * @sample samples.collections.Arrays.Sorting.sortArray - */ -@library("primitiveArraySort") -public actual fun FloatArray.sort(): Unit { - definedExternally -} - -/** - * Sorts the array in-place. - * - * @sample samples.collections.Arrays.Sorting.sortArray - */ -@library("primitiveArraySort") -public actual fun CharArray.sort(): Unit { - definedExternally -} - -/** - * Sorts the array in-place according to the natural order of its elements. - * - * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. - * - * @sample samples.collections.Arrays.Sorting.sortArrayOfComparable - */ -public actual fun > Array.sort(): Unit { - if (size > 1) sortArray(this) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - * - * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. - */ -@Deprecated("Use sortWith instead", ReplaceWith("this.sortWith(Comparator(comparison))")) -@DeprecatedSinceKotlin(warningSince = "1.6") -public fun Array.sort(comparison: (a: T, b: T) -> Int): Unit { - if (size > 1) sortArrayWith(this, comparison) -} - -/** - * Sorts a range in the array in-place. - * - * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArrayOfComparable - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun > Array.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - sortArrayWith(this, fromIndex, toIndex, naturalOrder()) -} - -/** - * Sorts a range in the array in-place. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArray - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun ByteArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast() - subarray.sort() -} - -/** - * Sorts a range in the array in-place. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArray - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun ShortArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast() - subarray.sort() -} - -/** - * Sorts a range in the array in-place. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArray - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun IntArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast() - subarray.sort() -} - -/** - * Sorts a range in the array in-place. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArray - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun LongArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - sortArrayWith(this.unsafeCast>(), fromIndex, toIndex, naturalOrder()) -} - -/** - * Sorts a range in the array in-place. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArray - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun FloatArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast() - subarray.sort() -} - -/** - * Sorts a range in the array in-place. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArray - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun DoubleArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast() - subarray.sort() -} - -/** - * Sorts a range in the array in-place. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - * - * @sample samples.collections.Arrays.Sorting.sortRangeOfArray - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun CharArray.sort(fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - val subarray = this.asDynamic().subarray(fromIndex, toIndex).unsafeCast() - subarray.sort() -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - */ -@Deprecated("Use other sorting functions from the Standard Library") -@DeprecatedSinceKotlin(warningSince = "1.6") -@kotlin.internal.InlineOnly -public inline fun ByteArray.sort(noinline comparison: (a: Byte, b: Byte) -> Int): Unit { - nativeSort(comparison) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - */ -@Deprecated("Use other sorting functions from the Standard Library") -@DeprecatedSinceKotlin(warningSince = "1.6") -@kotlin.internal.InlineOnly -public inline fun ShortArray.sort(noinline comparison: (a: Short, b: Short) -> Int): Unit { - nativeSort(comparison) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - */ -@Deprecated("Use other sorting functions from the Standard Library") -@DeprecatedSinceKotlin(warningSince = "1.6") -@kotlin.internal.InlineOnly -public inline fun IntArray.sort(noinline comparison: (a: Int, b: Int) -> Int): Unit { - nativeSort(comparison) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - */ -@Deprecated("Use other sorting functions from the Standard Library") -@DeprecatedSinceKotlin(warningSince = "1.6") -@kotlin.internal.InlineOnly -public inline fun LongArray.sort(noinline comparison: (a: Long, b: Long) -> Int): Unit { - nativeSort(comparison) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - */ -@Deprecated("Use other sorting functions from the Standard Library") -@DeprecatedSinceKotlin(warningSince = "1.6") -@kotlin.internal.InlineOnly -public inline fun FloatArray.sort(noinline comparison: (a: Float, b: Float) -> Int): Unit { - nativeSort(comparison) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - */ -@Deprecated("Use other sorting functions from the Standard Library") -@DeprecatedSinceKotlin(warningSince = "1.6") -@kotlin.internal.InlineOnly -public inline fun DoubleArray.sort(noinline comparison: (a: Double, b: Double) -> Int): Unit { - nativeSort(comparison) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparison] function. - */ -@Deprecated("Use other sorting functions from the Standard Library") -@DeprecatedSinceKotlin(warningSince = "1.6") -@kotlin.internal.InlineOnly -public inline fun CharArray.sort(noinline comparison: (a: Char, b: Char) -> Int): Unit { - nativeSort(comparison) -} - -/** - * Sorts the array in-place according to the order specified by the given [comparator]. - * - * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. - */ -public actual fun Array.sortWith(comparator: Comparator): Unit { - if (size > 1) sortArrayWith(this, comparator) -} - -/** - * Sorts a range in the array in-place with the given [comparator]. - * - * The sort is _stable_. It means that equal elements preserve their order relative to each other after sorting. - * - * @param fromIndex the start of the range (inclusive) to sort, 0 by default. - * @param toIndex the end of the range (exclusive) to sort, size of this array by default. - * - * @throws IndexOutOfBoundsException if [fromIndex] is less than zero or [toIndex] is greater than the size of this array. - * @throws IllegalArgumentException if [fromIndex] is greater than [toIndex]. - */ -@SinceKotlin("1.4") -@Suppress("ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS") -public actual fun Array.sortWith(comparator: Comparator, fromIndex: Int = 0, toIndex: Int = size): Unit { - AbstractList.checkRangeIndexes(fromIndex, toIndex, size) - sortArrayWith(this, fromIndex, toIndex, comparator) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun ByteArray.toTypedArray(): Array { - return js("[]").slice.call(this) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun ShortArray.toTypedArray(): Array { - return js("[]").slice.call(this) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun IntArray.toTypedArray(): Array { - return js("[]").slice.call(this) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun LongArray.toTypedArray(): Array { - return js("[]").slice.call(this) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun FloatArray.toTypedArray(): Array { - return js("[]").slice.call(this) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun DoubleArray.toTypedArray(): Array { - return js("[]").slice.call(this) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun BooleanArray.toTypedArray(): Array { - return js("[]").slice.call(this) -} - -/** - * Returns a *typed* object array containing all of the elements of this primitive array. - */ -public actual fun CharArray.toTypedArray(): Array { - return Array(size) { index -> this[index] } -} - diff --git a/libraries/stdlib/js/src/generated/_CharCategories.kt b/libraries/stdlib/js/src/generated/_CharCategories.kt deleted file mode 100644 index a4b9ed15bc5..00000000000 --- a/libraries/stdlib/js/src/generated/_CharCategories.kt +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateUnicodeData.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -// 1343 ranges totally -private object Category { - val decodedRangeStart: IntArray - val decodedRangeCategory: IntArray - - init { - val toBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" - val fromBase64 = IntArray(128) - for (i in toBase64.indices) { - fromBase64[toBase64[i].code] = i - } - - // rangeStartDiff.length = 1482 - val rangeStartDiff = "gBCFEDCKCDCaDDaDBhBCEEDDDDDEDXBHYBH5BRwBGDCHDCIDFHDCHFDCDEIRTEE7BGHDDJlCBbSEMOFGERwDEDDDDECEFCRBJhBFDCYFFCCzBvBjBBFC3BOhDBmBDGpBDDCtBBJIbEECLGDFCLDCgBBKVKEDiDDHCFECECKCEODBebC5CLBOKhBJDDDDWEBHFCFCPBZDEL1BVBSLPBgBB2BDBDICFBHKCCKCPDBHEDWBHEDDDDEDEDIBDGDCKCCGDDDCGECCWBFMDDCDEDDCHDDHKDDBKDBHFCWBFGFDBDDFEDBPDDKCHBGDCHEDWBFGFDCEDEDBHDDGDCKCGJEGDBFDDFDDDDDMEFDBFDCGBOKDFDFDCGFCXBQDDDDDBEGEDFDDKHBHDDGFCXBKBFCEFCFCHCHECCKDNCCHFCoBEDECFDDDDHDCCKJBGDCSDYBJEHBFDDEBIGKDCMuBFHEBGBIBKCkBFBFBXEIFJDFDGCKCEgBBDPEDGKKGECIBkBEOBDFFLBkBBIBEFFEClBrBCEBEGDBKGGDDDDDCHDENDCFEKDDlBDDFrBCDpKBECGEECpBBEChBBECGEECPB5BBECjCCDJUDQKG2CCGDsTCRBaCDrCDDIHNBEDLSDCJSCMLFCCM0BDHGFLBFDDKGKGEFDDBKGjBB1BHFChBDFmCKfDDDDDDCGDCFDKeCFLsBEaGKBDiBXDDD1BDGDEIGJEKGKGHBGCMF/BEBvBCEDDFHEKHKJJDDeDDGDKsBFEDCIEkBIICCDFKDDKeGCJHrBCDIIDBNBHEBEFDBFsB/BNBiBlB6BBF1EIiDJIGCGCIIIIGCGCIIIIOCIIIIIIDFEDDBFEDDDDEBDIFDDFEDBLFGCEEICFBJCDEDCLDKBFBKCCGDDKDDNDgBQNEBDMPFFDEDEBFFHECEBEEDFBEDDQjBCEDEFFCCJHBeEEfsIIEUCHCxCBeZoBGlCZLV8BuCW3FBJB2BIvDB4HOesBFCfKQgIjEW/BEgBCiIwBVCGnBCgBBpDvBBuBEDBHEFGCCjDCGEDCFCFlBDDF4BHCOBXJHBHBHBHBHBHBHBHBgBCECGHGEDIFBKCEDMEtBaB5CM2GaMEDDCKCGFCJEDFDDDC2CDDDB6CDCFrBB+CDEKgBkBMQfBKeIBPgBKnBPgKguGgC9vUDVB3jBD3BJoBGCsIBDQKCUuBDDKCcCCmCKCGIXJCNC/BBHGKDECEVFBEMCEEBqBDDGDFDXDCEBDGEG0BEICyBQCICKGSGDEBKcICXLCLBdDDBvBDECCDNCKECFCJKFBpBFEDCJDBICCKCEQBGDDByBEDCEFBYDCLEDDCKGCGCGJHBHBrBBEJDEwCjBIDCKGk9KMXExBEggCgoGuLCqDmBHMFFCKBNBFBIsDQRrLCQgCC2BoBMCCQGEGQDCQDDDDFDGDECEEFBnEEBFEDCKCDCaDDaDBFCKBtBCfDGCGCFEDDDDCECKDC" - val diff = decodeVarLenBase64(rangeStartDiff, fromBase64, 1342) - val start = IntArray(diff.size + 1) - for (i in diff.indices) { - start[i + 1] = start[i] + diff[i] - } - decodedRangeStart = start - - // rangeCategory.length = 2033 - val rangeCategory = "PsY44a41W54UYJYZYB14W7XC15WZPsYa84bl9Zw8b85Lr7C44brlerrYBZBCZCiBiBiBhCiiBhChiBhiCBhhChiCihBhChCChiBhChiClBCFhjCiBiBihDhiBhCCihBiBBhCCFCEbEbEb7EbGhCk7BixRkiCi4BRbh4BhRhCBRBCiiBBCiBChiZBCBCiBcGHhChCiBRBxxEYC40Rx8c6RGUm4GRFRFYRQZ44acG4wRYFEFGJYllGFlYGwcGmkEmcGFJFl8cYxwFGFGRFGFRJFGkkcYkxRm6aFGEGmmEmEGRYRFGxxYFRFRFRGQGIFmIFIGIooGFGFGYJ4EFmoIRFlxRlxRFRFxlRxlFllRxmFIGxxIoxRomFRIRxlFlmGRJFaL86F4mRxmGoRFRFRFRFllRxGIGRxmGxmGmxRxGRFlRRJmmFllGYRmmIRFllRlRFRFllRFxxGFIGmmRoxImxRFRllGmxRJ4aRFGxmIoRFlxRlxRFRFllRFxxGlImoGmmRxoIxoIGRmmIRxlFlmGRJ8FLRxmFFRFllRllRxxFlRlxRxlFRFRFRooGRIooRomRxFRIRJLc8aRmoIoGFllRlRFRFRlmGmoIooRGRGRxmGFRllGmxRJRYL8lGooYFllRlRFRFRFRmlIIxGooRGRIRlxFGRJxlFRGIFllRlRFlmGIGxIooRomF8xRxxFllILFGRJLcFxmIoRFRFRFxlRFRxxGxxIooGmmRRIRJxxIoYRFllGGRaFEGYJYRxlFRFRFlRFllGGlxRFxEGRJRFRFcY84c8mGcJL8G1WIFRFRGIGmmYFGRGRcGc88RYcYRFIGIGmmIomGFJYFooGmlFllGmmFIFIFGFmoIGIomFJIm8cBhRRxxBC4ECFRFRFlRFRFRFRFRFRFlRFRFRFRFRFRGYLRFcRBRCxxUF8YFMF1WRFYKFRFRFGRFGYRFGRFllRlRGRFmmIGIooGGY44E46FmxRJRLRY44U44GmmQRJRFEFRFGFlGRFRFxmGmoIooGmoIoxRxxIoGIGRxxcx4YJFRFRFRFRJLRcFmmIomRx4YFoGGmRomIGIGmxRJRJRYEYRGmmHRGIFmIGmIIooGFRJYcGcRmmIFomGmmIomGmlFJFmoGooGGIRYFIGIGRYJRFJFEYCRBRBYRGYGIGFGFllGomGFRCECECEGRGhCCiBCBCRBRCBCBCRBRCxBCBCRCDCDCDCiiRBj7CbCiiRBj7b7iCiiRxiCBRbCBbxxCiiRBj7bRMQUY9+V9+VYtOQMY9eY43X44Z1WY54XYMQRQrERLZ12ELZ12RERaRGHGHGR88B88BihBhiChhC8hcZBc8BB8CBCFi8cihBZBC8Z8CLKhCKr8cRZcZc88ZcZc85Z8ZcZc1WcZc1WcZcZcZcRcRLcLcZcZcZcZc1WLcZ1WZ1WZcZ1WZ1WZ1WZcZcZcRcRcBRCixBBCiBBihCCEBhCCchCGhCRY44LCiRRxxCFRkYRGFRFRFRFRFRFRFRFRFRGY9eY49eY44U49e49e1WYEYUY04VY48cRcRcRcRcRs4Y48ElK1Wc1W12U2cKGooUE88KqqEl4c8RFxxGm7bkkFUF4kEkFRFRFx8cLcFcRFcRLcLcLcLcLcFcFRFEFRcRFEYFEYFJFRhClmHnnYG4EhCEGFKGYRbEbhCCiBECiBhCk7bhClBihCiBBCBhCRhiBhhCCRhiFkkCFlGllGllGFooGmIcGRL88aRFYRIFIGRYJRGFYl4FGJFGYFGIRYFRGIFmoIGIGIYxEJRYFmEFJFRFGmoImoIGRFGFmIRJRYFEFcloGIFmlGmlFGFlmGFRllEYFomGo4YlkEoGRFRFRFRFRFRCbECk7bRCFooG4oGRJRFRFRFRTSFRFRCRCRlGFZFRFRlxFFbRF2VRFRFRF6cRGY41WRG40UX1W44V24Y44X33Y44R44U1WY50Z5R46YRFRFxxQY44a41W54UYJYZYB14W7XC15WZ12YYFEFEFRFRFRFlxRllRxxa65b86axcZcRQcR" - decodedRangeCategory = decodeVarLenBase64(rangeCategory, fromBase64, 1343) - } -} - -private fun categoryValueFrom(code: Int, ch: Int): Int { - return when { - code < 0x20 -> code - code < 0x400 -> if ((ch and 1) == 1) code shr 5 else code and 0x1f - else -> - when (ch % 3) { - 2 -> code shr 10 - 1 -> (code shr 5) and 0x1f - else -> code and 0x1f - } - } -} - -/** - * Returns the Unicode general category of this character as an Int. - */ -internal fun Char.getCategoryValue(): Int { - val ch = this.code - - val index = binarySearchRange(Category.decodedRangeStart, ch) - val start = Category.decodedRangeStart[index] - val code = Category.decodedRangeCategory[index] - val value = categoryValueFrom(code, ch - start) - - return if (value == 17) CharCategory.UNASSIGNED.value else value -} - -internal fun decodeVarLenBase64(base64: String, fromBase64: IntArray, resultLength: Int): IntArray { - val result = IntArray(resultLength) - var index = 0 - var int = 0 - var shift = 0 - for (char in base64) { - val sixBit = fromBase64[char.code] - int = int or ((sixBit and 0x1f) shl shift) - if (sixBit < 0x20) { - result[index++] = int - int = 0 - shift = 0 - } else { - shift += 5 - } - } - return result -} diff --git a/libraries/stdlib/js/src/generated/_CollectionsJs.kt b/libraries/stdlib/js/src/generated/_CollectionsJs.kt deleted file mode 100644 index 0ea6f573908..00000000000 --- a/libraries/stdlib/js/src/generated/_CollectionsJs.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.collections - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -import kotlin.js.* -import kotlin.ranges.contains -import kotlin.ranges.reversed - -/** - * Reverses elements in the list in-place. - */ -public actual fun MutableList.reverse(): Unit { - val midPoint = (size / 2) - 1 - if (midPoint < 0) return - var reverseIndex = lastIndex - for (index in 0..midPoint) { - val tmp = this[index] - this[index] = this[reverseIndex] - this[reverseIndex] = tmp - reverseIndex-- - } -} - diff --git a/libraries/stdlib/js/src/generated/_ComparisonsJs.kt b/libraries/stdlib/js/src/generated/_ComparisonsJs.kt deleted file mode 100644 index 3f3d11ea475..00000000000 --- a/libraries/stdlib/js/src/generated/_ComparisonsJs.kt +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.comparisons - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -import kotlin.js.* - -/** - * Returns the greater of two values. - * - * If values are equal, returns the first one. - */ -@SinceKotlin("1.1") -public actual fun > maxOf(a: T, b: T): T { - return if (a >= b) a else b -} - -/** - * Returns the greater of two values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Byte, b: Byte): Byte { - return maxOf(a.toInt(), b.toInt()).unsafeCast() -} - -/** - * Returns the greater of two values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Short, b: Short): Short { - return maxOf(a.toInt(), b.toInt()).unsafeCast() -} - -/** - * Returns the greater of two values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Int, b: Int): Int { - return JsMath.max(a, b) -} - -/** - * Returns the greater of two values. - */ -@SinceKotlin("1.1") -@Suppress("NOTHING_TO_INLINE") -public actual inline fun maxOf(a: Long, b: Long): Long { - return if (a >= b) a else b -} - -/** - * Returns the greater of two values. - * - * If either value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Float, b: Float): Float { - return JsMath.max(a, b) -} - -/** - * Returns the greater of two values. - * - * If either value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Double, b: Double): Double { - return JsMath.max(a, b) -} - -/** - * Returns the greater of three values. - * - * If there are multiple equal maximal values, returns the first of them. - */ -@SinceKotlin("1.1") -public actual fun > maxOf(a: T, b: T, c: T): T { - return maxOf(a, maxOf(b, c)) -} - -/** - * Returns the greater of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Byte, b: Byte, c: Byte): Byte { - return JsMath.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast() -} - -/** - * Returns the greater of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Short, b: Short, c: Short): Short { - return JsMath.max(a.toInt(), b.toInt(), c.toInt()).unsafeCast() -} - -/** - * Returns the greater of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Int, b: Int, c: Int): Int { - return JsMath.max(a, b, c) -} - -/** - * Returns the greater of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Long, b: Long, c: Long): Long { - return maxOf(a, maxOf(b, c)) -} - -/** - * Returns the greater of three values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Float, b: Float, c: Float): Float { - return JsMath.max(a, b, c) -} - -/** - * Returns the greater of three values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun maxOf(a: Double, b: Double, c: Double): Double { - return JsMath.max(a, b, c) -} - -/** - * Returns the greater of the given values. - * - * If there are multiple equal maximal values, returns the first of them. - */ -@SinceKotlin("1.4") -public actual fun > maxOf(a: T, vararg other: T): T { - var max = a - for (e in other) max = maxOf(max, e) - return max -} - -/** - * Returns the greater of the given values. - */ -@SinceKotlin("1.4") -public actual fun maxOf(a: Byte, vararg other: Byte): Byte { - var max = a - for (e in other) max = maxOf(max, e) - return max -} - -/** - * Returns the greater of the given values. - */ -@SinceKotlin("1.4") -public actual fun maxOf(a: Short, vararg other: Short): Short { - var max = a - for (e in other) max = maxOf(max, e) - return max -} - -/** - * Returns the greater of the given values. - */ -@SinceKotlin("1.4") -public actual fun maxOf(a: Int, vararg other: Int): Int { - var max = a - for (e in other) max = maxOf(max, e) - return max -} - -/** - * Returns the greater of the given values. - */ -@SinceKotlin("1.4") -public actual fun maxOf(a: Long, vararg other: Long): Long { - var max = a - for (e in other) max = maxOf(max, e) - return max -} - -/** - * Returns the greater of the given values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.4") -public actual fun maxOf(a: Float, vararg other: Float): Float { - var max = a - for (e in other) max = maxOf(max, e) - return max -} - -/** - * Returns the greater of the given values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.4") -public actual fun maxOf(a: Double, vararg other: Double): Double { - var max = a - for (e in other) max = maxOf(max, e) - return max -} - -/** - * Returns the smaller of two values. - * - * If values are equal, returns the first one. - */ -@SinceKotlin("1.1") -public actual fun > minOf(a: T, b: T): T { - return if (a <= b) a else b -} - -/** - * Returns the smaller of two values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Byte, b: Byte): Byte { - return minOf(a.toInt(), b.toInt()).unsafeCast() -} - -/** - * Returns the smaller of two values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Short, b: Short): Short { - return minOf(a.toInt(), b.toInt()).unsafeCast() -} - -/** - * Returns the smaller of two values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Int, b: Int): Int { - return JsMath.min(a, b) -} - -/** - * Returns the smaller of two values. - */ -@SinceKotlin("1.1") -@Suppress("NOTHING_TO_INLINE") -public actual inline fun minOf(a: Long, b: Long): Long { - return if (a <= b) a else b -} - -/** - * Returns the smaller of two values. - * - * If either value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Float, b: Float): Float { - return JsMath.min(a, b) -} - -/** - * Returns the smaller of two values. - * - * If either value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Double, b: Double): Double { - return JsMath.min(a, b) -} - -/** - * Returns the smaller of three values. - * - * If there are multiple equal minimal values, returns the first of them. - */ -@SinceKotlin("1.1") -public actual fun > minOf(a: T, b: T, c: T): T { - return minOf(a, minOf(b, c)) -} - -/** - * Returns the smaller of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Byte, b: Byte, c: Byte): Byte { - return JsMath.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast() -} - -/** - * Returns the smaller of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Short, b: Short, c: Short): Short { - return JsMath.min(a.toInt(), b.toInt(), c.toInt()).unsafeCast() -} - -/** - * Returns the smaller of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Int, b: Int, c: Int): Int { - return JsMath.min(a, b, c) -} - -/** - * Returns the smaller of three values. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Long, b: Long, c: Long): Long { - return minOf(a, minOf(b, c)) -} - -/** - * Returns the smaller of three values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Float, b: Float, c: Float): Float { - return JsMath.min(a, b, c) -} - -/** - * Returns the smaller of three values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.1") -@kotlin.internal.InlineOnly -public actual inline fun minOf(a: Double, b: Double, c: Double): Double { - return JsMath.min(a, b, c) -} - -/** - * Returns the smaller of the given values. - * - * If there are multiple equal minimal values, returns the first of them. - */ -@SinceKotlin("1.4") -public actual fun > minOf(a: T, vararg other: T): T { - var min = a - for (e in other) min = minOf(min, e) - return min -} - -/** - * Returns the smaller of the given values. - */ -@SinceKotlin("1.4") -public actual fun minOf(a: Byte, vararg other: Byte): Byte { - var min = a - for (e in other) min = minOf(min, e) - return min -} - -/** - * Returns the smaller of the given values. - */ -@SinceKotlin("1.4") -public actual fun minOf(a: Short, vararg other: Short): Short { - var min = a - for (e in other) min = minOf(min, e) - return min -} - -/** - * Returns the smaller of the given values. - */ -@SinceKotlin("1.4") -public actual fun minOf(a: Int, vararg other: Int): Int { - var min = a - for (e in other) min = minOf(min, e) - return min -} - -/** - * Returns the smaller of the given values. - */ -@SinceKotlin("1.4") -public actual fun minOf(a: Long, vararg other: Long): Long { - var min = a - for (e in other) min = minOf(min, e) - return min -} - -/** - * Returns the smaller of the given values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.4") -public actual fun minOf(a: Float, vararg other: Float): Float { - var min = a - for (e in other) min = minOf(min, e) - return min -} - -/** - * Returns the smaller of the given values. - * - * If any value is `NaN`, returns `NaN`. - */ -@SinceKotlin("1.4") -public actual fun minOf(a: Double, vararg other: Double): Double { - var min = a - for (e in other) min = minOf(min, e) - return min -} - diff --git a/libraries/stdlib/js/src/generated/_DigitChars.kt b/libraries/stdlib/js/src/generated/_DigitChars.kt deleted file mode 100644 index 37ab1b7993f..00000000000 --- a/libraries/stdlib/js/src/generated/_DigitChars.kt +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateUnicodeData.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -// 37 ranges totally -private object Digit { - internal val rangeStart = intArrayOf( - 0x0030, 0x0660, 0x06f0, 0x07c0, 0x0966, 0x09e6, 0x0a66, 0x0ae6, 0x0b66, 0x0be6, 0x0c66, 0x0ce6, 0x0d66, 0x0de6, 0x0e50, 0x0ed0, 0x0f20, 0x1040, 0x1090, 0x17e0, - 0x1810, 0x1946, 0x19d0, 0x1a80, 0x1a90, 0x1b50, 0x1bb0, 0x1c40, 0x1c50, 0xa620, 0xa8d0, 0xa900, 0xa9d0, 0xa9f0, 0xaa50, 0xabf0, 0xff10, - ) -} - -/** - * Returns the index of the largest element in [array] smaller or equal to the specified [needle], - * or -1 if [needle] is smaller than the smallest element in [array]. - */ -internal fun binarySearchRange(array: IntArray, needle: Int): Int { - var bottom = 0 - var top = array.size - 1 - var middle = -1 - var value = 0 - while (bottom <= top) { - middle = (bottom + top) / 2 - value = array[middle] - if (needle > value) - bottom = middle + 1 - else if (needle == value) - return middle - else - top = middle - 1 - } - return middle - (if (needle < value) 1 else 0) -} - -/** - * Returns an integer from 0..9 indicating the digit this character represents, - * or -1 if this character is not a digit. - */ -internal fun Char.digitToIntImpl(): Int { - val ch = this.code - val index = binarySearchRange(Digit.rangeStart, ch) - val diff = ch - Digit.rangeStart[index] - return if (diff < 10) diff else -1 -} - -/** - * Returns `true` if this character is a digit. - */ -internal fun Char.isDigitImpl(): Boolean { - return digitToIntImpl() >= 0 -} diff --git a/libraries/stdlib/js/src/generated/_LetterChars.kt b/libraries/stdlib/js/src/generated/_LetterChars.kt deleted file mode 100644 index bee143a9b72..00000000000 --- a/libraries/stdlib/js/src/generated/_LetterChars.kt +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateUnicodeData.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -// 222 ranges totally -private object Letter { - val decodedRangeStart: IntArray - val decodedRangeLength: IntArray - val decodedRangeCategory: IntArray - - init { - val toBase64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" - val fromBase64 = IntArray(128) - for (i in toBase64.indices) { - fromBase64[toBase64[i].code] = i - } - - // rangeStartDiff.length = 356 - val rangeStartDiff = "hCgBpCQGYHZH5BRpBPPPPPPRMP5BPPlCPP6BkEPPPPcPXPzBvBrB3BOiDoBHwD+E3DauCnFmBmB2D6E1BlBTiBmBlBP5BhBiBrBvBjBqBnBPRtBiCmCtBlB0BmB5BiB7BmBgEmChBZgCoEoGVpBSfRhBPqKQ2BwBYoFgB4CJuTiEvBuCuDrF5DgEgFlJ1DgFmBQtBsBRGsB+BPiBlD1EIjDPRPPPQPPPPPGQSQS/DxENVNU+B9zCwBwBPPCkDPNnBPqDYY1R8B7FkFgTgwGgwUwmBgKwBuBScmEP/BPPPPPPrBP8B7F1B/ErBqC6B7BiBmBfQsBUwCw/KwqIwLwETPcPjQgJxFgBlBsD" - val diff = decodeVarLenBase64(rangeStartDiff, fromBase64, 222) - val start = IntArray(diff.size) - for (i in diff.indices) { - if (i == 0) start[i] = diff[i] - else start[i] = start[i - 1] + diff[i] - } - decodedRangeStart = start - - // rangeLength.length = 328 - val rangeLength = "aaMBXHYH5BRpBPPPPPPRMP5BPPlCPPzBDOOPPcPXPzBvBjB3BOhDmBBpB7DoDYxB+EiBP1DoExBkBQhBekBPmBgBhBctBiBMWOOXhCsBpBkBUV3Ba4BkB0DlCgBXgBtD4FSdBfPhBPpKP0BvBXjEQ2CGsT8DhBtCqDpFvD1D3E0IrD2EkBJrBDOBsB+BPiBlB1EIjDPPPPPPPPPPPGPPMNLsBNPNPKCvBvBPPCkDPBmBPhDXXgD4B6FzEgDguG9vUtkB9JcuBSckEP/BPPPPPPBPf4FrBjEhBpC3B5BKaWPrBOwCk/KsCuLqDHPbPxPsFtEaaqDL" - decodedRangeLength = decodeVarLenBase64(rangeLength, fromBase64, 222) - - // rangeCategory.length = 959 - val rangeCategory = "GFjgggUHGGFFZZZmzpz5qB6s6020B60ptltB6smt2sB60mz22B1+vv+8BZZ5s2850BW5q1ymtB506smzBF3q1q1qB1q1q1+Bgii4wDTm74g3KiggxqM60q1q1Bq1o1q1BF1qlrqrBZ2q5wprBGFZWWZGHFsjiooLowgmOowjkwCkgoiIk7ligGogiioBkwkiYkzj2oNoi+sbkwj04DghhkQ8wgiYkgoioDsgnkwC4gikQ//v+85BkwvoIsgoyI4yguI0whiwEowri4CoghsJowgqYowgm4DkwgsY/nwnzPowhmYkg6wI8yggZswikwHgxgmIoxgqYkwgk4DkxgmIkgoioBsgssoBgzgyI8g9gL8g9kI0wgwJoxgkoC0wgioFkw/wI0w53iF4gioYowjmgBHGq1qkgwBF1q1q8qBHwghuIwghyKk0goQkwgoQk3goQHGFHkyg0pBgxj6IoinkxDswno7Ikwhz9Bo0gioB8z48Rwli0xN0mpjoX8w78pDwltoqKHFGGwwgsIHFH3q1q16BFHWFZ1q10q1B2qlwq1B1q10q1B2q1yq1B6q1gq1Biq1qhxBir1qp1Bqt1q1qB1g1q1+B//3q16B///q1qBH/qlqq9Bholqq9B1i00a1q10qD1op1HkwmigEigiy6Cptogq1Bixo1kDq7/j00B2qgoBWGFm1lz50B6s5q1+BGWhggzhwBFFhgk4//Bo2jigE8wguI8wguI8wgugUog1qoB4qjmIwwi2KgkYHHH4lBgiFWkgIWoghssMmz5smrBZ3q1y50B5sm7gzBtz1smzB5smz50BqzqtmzB5sgzqzBF2/9//5BowgoIwmnkzPkwgk4C8ys65BkgoqI0wgy6FghquZo2giY0ghiIsgh24B4ghsQ8QF/v1q1OFs0O8iCHHF1qggz/B8wg6Iznv+//B08QgohsjK0QGFk7hsQ4gB" - decodedRangeCategory = decodeVarLenBase64(rangeCategory, fromBase64, 222) - } -} - -/** - * Returns `true` if this character is a letter. - */ -internal fun Char.isLetterImpl(): Boolean { - return getLetterType() != 0 -} - -/** - * Returns `true` if this character is a lower case letter, or it has contributory property `Other_Lowercase`. - */ -internal fun Char.isLowerCaseImpl(): Boolean { - return getLetterType() == 1 || code.isOtherLowercase() -} - -/** - * Returns `true` if this character is an upper case letter, or it has contributory property `Other_Uppercase`. - */ -internal fun Char.isUpperCaseImpl(): Boolean { - return getLetterType() == 2 || code.isOtherUppercase() -} - -/** - * Returns - * - `1` if the character is a lower case letter, - * - `2` if the character is an upper case letter, - * - `3` if the character is a letter but not a lower or upper case letter, - * - `0` otherwise. - */ -private fun Char.getLetterType(): Int { - val ch = this.code - val index = binarySearchRange(Letter.decodedRangeStart, ch) - - val rangeStart = Letter.decodedRangeStart[index] - val rangeEnd = rangeStart + Letter.decodedRangeLength[index] - 1 - val code = Letter.decodedRangeCategory[index] - - if (ch > rangeEnd) { - return 0 - } - - val lastTwoBits = code and 0x3 - - if (lastTwoBits == 0) { // gap pattern - var shift = 2 - var threshold = rangeStart - for (i in 0..1) { - threshold += (code shr shift) and 0x7f - if (threshold > ch) { - return 3 - } - shift += 7 - threshold += (code shr shift) and 0x7f - if (threshold > ch) { - return 0 - } - shift += 7 - } - return 3 - } - - if (code <= 0x7) { - return lastTwoBits - } - - val distance = (ch - rangeStart) - val shift = if (code <= 0x1F) distance % 2 else distance - return (code shr (2 * shift)) and 0x3 -} - diff --git a/libraries/stdlib/js/src/generated/_OtherLowercaseChars.kt b/libraries/stdlib/js/src/generated/_OtherLowercaseChars.kt deleted file mode 100644 index 06d18476f12..00000000000 --- a/libraries/stdlib/js/src/generated/_OtherLowercaseChars.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateUnicodeData.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -private object OtherLowercase { - internal val otherLowerStart = intArrayOf( - 0x00aa, 0x00ba, 0x02b0, 0x02c0, 0x02e0, 0x0345, 0x037a, 0x1d2c, 0x1d78, 0x1d9b, 0x2071, 0x207f, 0x2090, 0x2170, 0x24d0, 0x2c7c, 0xa69c, 0xa770, 0xa7f8, 0xab5c, - ) - internal val otherLowerLength = intArrayOf( - 1, 1, 9, 2, 5, 1, 1, 63, 1, 37, 1, 1, 13, 16, 26, 2, 2, 1, 2, 4, - ) -} - -internal fun Int.isOtherLowercase(): Boolean { - val index = binarySearchRange(OtherLowercase.otherLowerStart, this) - return index >= 0 && this < OtherLowercase.otherLowerStart[index] + OtherLowercase.otherLowerLength[index] -} diff --git a/libraries/stdlib/js/src/generated/_OtherUppercaseChars.kt b/libraries/stdlib/js/src/generated/_OtherUppercaseChars.kt deleted file mode 100644 index 0a7479f66ef..00000000000 --- a/libraries/stdlib/js/src/generated/_OtherUppercaseChars.kt +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateUnicodeData.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -internal fun Int.isOtherUppercase(): Boolean { - return this in 0x2160..0x216f - || this in 0x24b6..0x24cf -} diff --git a/libraries/stdlib/js/src/generated/_StringsJs.kt b/libraries/stdlib/js/src/generated/_StringsJs.kt deleted file mode 100644 index 8d68ae6a654..00000000000 --- a/libraries/stdlib/js/src/generated/_StringsJs.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -import kotlin.js.* - -/** - * Returns a character at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this char sequence. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -public actual fun CharSequence.elementAt(index: Int): Char { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, length: $length}") } -} - diff --git a/libraries/stdlib/js/src/generated/_TitlecaseMappings.kt b/libraries/stdlib/js/src/generated/_TitlecaseMappings.kt deleted file mode 100644 index e12c1662cf9..00000000000 --- a/libraries/stdlib/js/src/generated/_TitlecaseMappings.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateUnicodeData.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -// 4 ranges totally -internal fun Char.titlecaseCharImpl(): Char { - val code = this.code - // Letters repeating sequence and code of the Lt is a multiple of 3, e.g. <DŽ, Dž, dž> - if (code in 0x01c4..0x01cc || code in 0x01f1..0x01f3) { - return (3 * ((code + 1) / 3)).toChar() - } - // Lower case letters whose title case mapping equivalent is equal to the original letter - if (code in 0x10d0..0x10fa || code in 0x10fd..0x10ff) { - return this - } - return uppercaseChar() -} \ No newline at end of file diff --git a/libraries/stdlib/js/src/generated/_UArraysJs.kt b/libraries/stdlib/js/src/generated/_UArraysJs.kt deleted file mode 100644 index 64fdff07710..00000000000 --- a/libraries/stdlib/js/src/generated/_UArraysJs.kt +++ /dev/null @@ -1,168 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.collections - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateStandardLib.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -import kotlin.js.* -import kotlin.ranges.contains -import kotlin.ranges.reversed - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun UIntArray.elementAt(index: Int): UInt { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun ULongArray.elementAt(index: Int): ULong { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun UByteArray.elementAt(index: Int): UByte { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns an element at the given [index] or throws an [IndexOutOfBoundsException] if the [index] is out of bounds of this array. - * - * @sample samples.collections.Collections.Elements.elementAt - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun UShortArray.elementAt(index: Int): UShort { - return elementAtOrElse(index) { throw IndexOutOfBoundsException("index: $index, size: $size}") } -} - -/** - * Returns a [List] that wraps the original array. - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun UIntArray.asList(): List { - return object : AbstractList(), RandomAccess { - override val size: Int get() = this@asList.size - override fun isEmpty(): Boolean = this@asList.isEmpty() - override fun contains(element: UInt): Boolean = this@asList.contains(element) - override fun get(index: Int): UInt { - AbstractList.checkElementIndex(index, size) - return this@asList[index] - } - override fun indexOf(element: UInt): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is UInt) return -1 - return this@asList.indexOf(element) - } - override fun lastIndexOf(element: UInt): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is UInt) return -1 - return this@asList.lastIndexOf(element) - } - } -} - -/** - * Returns a [List] that wraps the original array. - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun ULongArray.asList(): List { - return object : AbstractList(), RandomAccess { - override val size: Int get() = this@asList.size - override fun isEmpty(): Boolean = this@asList.isEmpty() - override fun contains(element: ULong): Boolean = this@asList.contains(element) - override fun get(index: Int): ULong { - AbstractList.checkElementIndex(index, size) - return this@asList[index] - } - override fun indexOf(element: ULong): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is ULong) return -1 - return this@asList.indexOf(element) - } - override fun lastIndexOf(element: ULong): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is ULong) return -1 - return this@asList.lastIndexOf(element) - } - } -} - -/** - * Returns a [List] that wraps the original array. - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun UByteArray.asList(): List { - return object : AbstractList(), RandomAccess { - override val size: Int get() = this@asList.size - override fun isEmpty(): Boolean = this@asList.isEmpty() - override fun contains(element: UByte): Boolean = this@asList.contains(element) - override fun get(index: Int): UByte { - AbstractList.checkElementIndex(index, size) - return this@asList[index] - } - override fun indexOf(element: UByte): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is UByte) return -1 - return this@asList.indexOf(element) - } - override fun lastIndexOf(element: UByte): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is UByte) return -1 - return this@asList.lastIndexOf(element) - } - } -} - -/** - * Returns a [List] that wraps the original array. - */ -@SinceKotlin("1.3") -@ExperimentalUnsignedTypes -public actual fun UShortArray.asList(): List { - return object : AbstractList(), RandomAccess { - override val size: Int get() = this@asList.size - override fun isEmpty(): Boolean = this@asList.isEmpty() - override fun contains(element: UShort): Boolean = this@asList.contains(element) - override fun get(index: Int): UShort { - AbstractList.checkElementIndex(index, size) - return this@asList[index] - } - override fun indexOf(element: UShort): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is UShort) return -1 - return this@asList.indexOf(element) - } - override fun lastIndexOf(element: UShort): Int { - @Suppress("USELESS_CAST") - if ((element as Any?) !is UShort) return -1 - return this@asList.lastIndexOf(element) - } - } -} - diff --git a/libraries/stdlib/js/src/generated/_WhitespaceChars.kt b/libraries/stdlib/js/src/generated/_WhitespaceChars.kt deleted file mode 100644 index 17a9397a805..00000000000 --- a/libraries/stdlib/js/src/generated/_WhitespaceChars.kt +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2010-2023 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 kotlin.text - -// -// NOTE: THIS FILE IS AUTO-GENERATED by the GenerateUnicodeData.kt -// See: https://github.com/JetBrains/kotlin/tree/master/libraries/stdlib -// - -// 9 ranges totally -/** - * Returns `true` if this character is a whitespace. - */ -internal fun Char.isWhitespaceImpl(): Boolean { - val ch = this.code - return ch in 0x0009..0x000d - || ch in 0x001c..0x0020 - || ch == 0x00a0 - || ch > 0x1000 && ( - ch == 0x1680 - || ch in 0x2000..0x200a - || ch == 0x2028 - || ch == 0x2029 - || ch == 0x202f - || ch == 0x205f - || ch == 0x3000 - ) -}