KJS: split kotlin_* files to several files
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
Kotlin.arrayToString = function (a) {
|
||||
return "[" + a.map(Kotlin.toString).join(", ") + "]";
|
||||
};
|
||||
|
||||
Kotlin.arrayDeepToString = function (a, visited) {
|
||||
visited = visited || [a];
|
||||
return "[" + a.map(function(e) {
|
||||
if (Array.isArray(e) && visited.indexOf(e) < 0) {
|
||||
visited.push(e);
|
||||
var result = Kotlin.arrayDeepToString(e, visited);
|
||||
visited.pop();
|
||||
return result;
|
||||
}
|
||||
else {
|
||||
return Kotlin.toString(e);
|
||||
}
|
||||
}).join(", ") + "]";
|
||||
};
|
||||
|
||||
Kotlin.arrayEquals = function (a, b) {
|
||||
if (a === b) {
|
||||
return true;
|
||||
}
|
||||
if (!Array.isArray(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) {
|
||||
if (a === b) {
|
||||
return true;
|
||||
}
|
||||
if (!Array.isArray(b) || a.length !== b.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 0, n = a.length; i < n; i++) {
|
||||
if (Array.isArray(a[i])) {
|
||||
if (!Kotlin.arrayDeepEquals(a[i], b[i])) {
|
||||
return false;
|
||||
}
|
||||
} else if (!Kotlin.equals(a[i], b[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
Kotlin.arrayHashCode = function (arr) {
|
||||
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) {
|
||||
var result = 1;
|
||||
for (var i = 0, n = arr.length; i < n; i++) {
|
||||
var e = arr[i];
|
||||
result = ((31 * result | 0) + (Array.isArray(e) ? Kotlin.arrayDeepHashCode(e) : Kotlin.hashCode(e))) | 0;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
Kotlin.primitiveArraySort = function(array) {
|
||||
array.sort(Kotlin.primitiveCompareTo)
|
||||
};
|
||||
@@ -0,0 +1,144 @@
|
||||
/*
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// TODO Store callable references for members in class
|
||||
Kotlin.getCallableRefForMemberFunction = function (memberName) {
|
||||
return function () {
|
||||
var args = [].slice.call(arguments);
|
||||
var instance = args.shift();
|
||||
return instance[memberName].apply(instance, args);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForMemberFunction = function (receiver, memberName) {
|
||||
return function () {
|
||||
return receiver[memberName].apply(receiver, arguments);
|
||||
};
|
||||
};
|
||||
|
||||
// TODO Store callable references for extension functions in class
|
||||
// extFun expected receiver as the first argument
|
||||
Kotlin.getCallableRefForExtensionFunction = function (extFun) {
|
||||
return function () {
|
||||
return extFun.apply(null, arguments);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForExtensionFunction = function (receiver, extFun) {
|
||||
return function () {
|
||||
var args = [].slice.call(arguments);
|
||||
args.unshift(receiver);
|
||||
return extFun.apply(null, args);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForLocalExtensionFunction = function (extFun) {
|
||||
return function () {
|
||||
var args = [].slice.call(arguments);
|
||||
var instance = args.shift();
|
||||
return extFun.apply(instance, args);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForLocalExtensionFunction = function (receiver, extFun) {
|
||||
return function () {
|
||||
return extFun.apply(receiver, arguments);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForConstructor = function (klass) {
|
||||
return function () {
|
||||
var obj = Object.create(klass.prototype);
|
||||
klass.apply(obj, arguments);
|
||||
return obj;
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForTopLevelProperty = function(getter, setter, name) {
|
||||
var getFun = Function("getter", "return function " + name + "() { return getter(); }")(getter, setter);
|
||||
return getPropertyRefClass(getFun, "get", setter, "set_za3rmp$", propertyRefClassMetadataCache.zeroArg);
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForMemberProperty = function(name, isVar) {
|
||||
var getFun = Function("return function " + name + "(receiver) { return receiver['" + name + "']; }")();
|
||||
var setFun = isVar ? function(receiver, value) { receiver[name] = value; } : null;
|
||||
return getPropertyRefClass(getFun, "get_za3rmp$", setFun, "set_wn2jw4$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForMemberProperty = function(receiver, name, isVar) {
|
||||
var getFun = Function("receiver", "return function " + name + "() { return receiver['" + name + "']; }")(receiver);
|
||||
var setFun = isVar ? function(value) { receiver[name] = value; } : null;
|
||||
return getPropertyRefClass(getFun, "get", setFun, "set_za3rmp$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForExtensionProperty = function(name, getFun, setFun) {
|
||||
var getFunWrapper = Function("getFun", "return function " + name + "(receiver, extensionReceiver) { return getFun(receiver, extensionReceiver) }")(getFun);
|
||||
return getPropertyRefClass(getFunWrapper, "get_za3rmp$", setFun, "set_wn2jw4$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForExtensionProperty = function(receiver, name, getFun, setFun) {
|
||||
var getFunWrapper = Function("receiver", "getFun", "return function " + name + "(extensionReceiver) { return getFun(receiver, extensionReceiver) }")(receiver, getFun);
|
||||
if (setFun) {
|
||||
setFun = setFun.bind(null, receiver);
|
||||
}
|
||||
return getPropertyRefClass(getFunWrapper, "get", setFun, "set_za3rmp$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
function getPropertyRefClass(getFun, getName, setFun, setName, cache) {
|
||||
var obj = getFun;
|
||||
var isMutable = typeof setFun === "function";
|
||||
obj.$metadata$ = getPropertyRefMetadata(isMutable ? cache.mutable : cache.immutable);
|
||||
obj[getName] = getFun;
|
||||
if (isMutable) {
|
||||
obj[setName] = setFun;
|
||||
}
|
||||
obj.constructor = obj;
|
||||
return obj;
|
||||
}
|
||||
|
||||
var propertyRefClassMetadataCache = {
|
||||
zeroArg: {
|
||||
mutable: { value: null, implementedInterface: function () {
|
||||
return Kotlin.kotlin.reflect.KMutableProperty0 }
|
||||
},
|
||||
immutable: { value: null, implementedInterface: function () {
|
||||
return Kotlin.kotlin.reflect.KProperty0 }
|
||||
}
|
||||
},
|
||||
oneArg: {
|
||||
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 = {
|
||||
baseClasses: [cache.implementedInterface()],
|
||||
baseClass: null,
|
||||
classIndex: Kotlin.newClassIndex(),
|
||||
functions: {},
|
||||
properties: {},
|
||||
types: {},
|
||||
staticMembers: {}
|
||||
};
|
||||
}
|
||||
return cache.value;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
Kotlin.toShort = function (a) {
|
||||
return (a & 0xFFFF) << 16 >> 16;
|
||||
};
|
||||
|
||||
Kotlin.toByte = function (a) {
|
||||
return (a & 0xFF) << 24 >> 24;
|
||||
};
|
||||
|
||||
Kotlin.toChar = function (a) {
|
||||
return String.fromCharCode((((a | 0) % 65536) & 0xFFFF) << 16 >>> 16);
|
||||
};
|
||||
|
||||
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() : (a | 0);
|
||||
};
|
||||
|
||||
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));
|
||||
};
|
||||
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
Kotlin.equals = function (obj1, obj2) {
|
||||
if (obj1 == null) {
|
||||
return obj2 == null;
|
||||
}
|
||||
|
||||
if (obj2 == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (typeof obj1 == "object" && typeof obj1.equals === "function") {
|
||||
return obj1.equals(obj2);
|
||||
}
|
||||
|
||||
return obj1 === obj2;
|
||||
};
|
||||
|
||||
Kotlin.hashCode = function (obj) {
|
||||
if (obj == null) {
|
||||
return 0;
|
||||
}
|
||||
if ("function" == typeof obj.hashCode) {
|
||||
return obj.hashCode();
|
||||
}
|
||||
var objType = typeof obj;
|
||||
if ("object" == objType || "function" == objType) {
|
||||
return getObjectHashCode(obj);
|
||||
} else if ("number" == objType) {
|
||||
// TODO: a more elaborate code is needed for floating point values.
|
||||
return obj | 0;
|
||||
} if ("boolean" == objType) {
|
||||
return Number(obj)
|
||||
}
|
||||
|
||||
var str = String(obj);
|
||||
return getStringHashCode(str);
|
||||
};
|
||||
|
||||
Kotlin.toString = function (o) {
|
||||
if (o == null) {
|
||||
return "null";
|
||||
}
|
||||
else if (Array.isArray(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;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,252 +0,0 @@
|
||||
/**
|
||||
* Copyright 2010 Tim Down.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// Kotlin stdlib
|
||||
|
||||
Kotlin.equals = function (obj1, obj2) {
|
||||
if (obj1 == null) {
|
||||
return obj2 == null;
|
||||
}
|
||||
|
||||
if (obj2 == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (typeof obj1 == "object" && typeof obj1.equals === "function") {
|
||||
return obj1.equals(obj2);
|
||||
}
|
||||
|
||||
return obj1 === obj2;
|
||||
};
|
||||
|
||||
Kotlin.hashCode = function (obj) {
|
||||
if (obj == null) {
|
||||
return 0;
|
||||
}
|
||||
if ("function" == typeof obj.hashCode) {
|
||||
return obj.hashCode();
|
||||
}
|
||||
var objType = typeof obj;
|
||||
if ("object" == objType || "function" == objType) {
|
||||
return getObjectHashCode(obj);
|
||||
} else if ("number" == objType) {
|
||||
// TODO: a more elaborate code is needed for floating point values.
|
||||
return obj | 0;
|
||||
} if ("boolean" == objType) {
|
||||
return Number(obj)
|
||||
}
|
||||
|
||||
var str = String(obj);
|
||||
return getStringHashCode(str);
|
||||
};
|
||||
|
||||
Kotlin.toString = function (o) {
|
||||
if (o == null) {
|
||||
return "null";
|
||||
}
|
||||
else if (Array.isArray(o)) {
|
||||
return "[...]";
|
||||
}
|
||||
else {
|
||||
return o.toString();
|
||||
}
|
||||
};
|
||||
|
||||
Kotlin.arrayToString = function (a) {
|
||||
return "[" + a.map(Kotlin.toString).join(", ") + "]";
|
||||
};
|
||||
|
||||
Kotlin.arrayDeepToString = function (a, visited) {
|
||||
visited = visited || [a];
|
||||
return "[" + a.map(function(e) {
|
||||
if (Array.isArray(e) && visited.indexOf(e) < 0) {
|
||||
visited.push(e);
|
||||
var result = Kotlin.arrayDeepToString(e, visited);
|
||||
visited.pop();
|
||||
return result;
|
||||
}
|
||||
else {
|
||||
return Kotlin.toString(e);
|
||||
}
|
||||
}).join(", ") + "]";
|
||||
};
|
||||
|
||||
Kotlin.compareTo = function (a, b) {
|
||||
var typeA = typeof a;
|
||||
var typeB = typeof a;
|
||||
if (Kotlin.isChar(a) && typeB == "number") {
|
||||
return Kotlin.primitiveCompareTo(a.charCodeAt(0), b);
|
||||
}
|
||||
if (typeA == "number" && Kotlin.isChar(b)) {
|
||||
return Kotlin.primitiveCompareTo(a, b.charCodeAt(0));
|
||||
}
|
||||
if (typeA == "number" || typeA == "string") {
|
||||
return a < b ? -1 : a > b ? 1 : 0;
|
||||
}
|
||||
return a.compareTo_za3rmp$(b);
|
||||
};
|
||||
|
||||
Kotlin.primitiveCompareTo = function (a, b) {
|
||||
return a < b ? -1 : a > b ? 1 : 0;
|
||||
};
|
||||
|
||||
Kotlin.isNumber = function (a) {
|
||||
return typeof a == "number" || a instanceof Kotlin.Long;
|
||||
};
|
||||
|
||||
Kotlin.isChar = function (value) {
|
||||
return (typeof value) == "string" && value.length == 1;
|
||||
};
|
||||
|
||||
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);
|
||||
};
|
||||
|
||||
Kotlin.charInc = function (value) {
|
||||
return String.fromCharCode(value.charCodeAt(0)+1);
|
||||
};
|
||||
|
||||
Kotlin.charDec = function (value) {
|
||||
return String.fromCharCode(value.charCodeAt(0)-1);
|
||||
};
|
||||
|
||||
Kotlin.toShort = function (a) {
|
||||
return (a & 0xFFFF) << 16 >> 16;
|
||||
};
|
||||
|
||||
Kotlin.toByte = function (a) {
|
||||
return (a & 0xFF) << 24 >> 24;
|
||||
};
|
||||
|
||||
Kotlin.toChar = function (a) {
|
||||
return String.fromCharCode((((a | 0) % 65536) & 0xFFFF) << 16 >>> 16);
|
||||
};
|
||||
|
||||
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() : (a | 0);
|
||||
};
|
||||
|
||||
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));
|
||||
};
|
||||
|
||||
/** @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.arrayEquals = function (a, b) {
|
||||
if (a === b) {
|
||||
return true;
|
||||
}
|
||||
if (!Array.isArray(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) {
|
||||
if (a === b) {
|
||||
return true;
|
||||
}
|
||||
if (!Array.isArray(b) || a.length !== b.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
for (var i = 0, n = a.length; i < n; i++) {
|
||||
if (Array.isArray(a[i])) {
|
||||
if (!Kotlin.arrayDeepEquals(a[i], b[i])) {
|
||||
return false;
|
||||
}
|
||||
} else if (!Kotlin.equals(a[i], b[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
Kotlin.arrayHashCode = function (arr) {
|
||||
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) {
|
||||
var result = 1;
|
||||
for (var i = 0, n = arr.length; i < n; i++) {
|
||||
var e = arr[i];
|
||||
result = ((31 * result | 0) + (Array.isArray(e) ? Kotlin.arrayDeepHashCode(e) : Kotlin.hashCode(e))) | 0;
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
Kotlin.primitiveArraySort = function(array) {
|
||||
array.sort(Kotlin.primitiveCompareTo)
|
||||
};
|
||||
|
||||
Kotlin.identityHashCode = getObjectHashCode;
|
||||
|
||||
@@ -1,320 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
(function () {
|
||||
Kotlin.TYPE = {
|
||||
CLASS: "class",
|
||||
TRAIT: "trait",
|
||||
OBJECT: "object",
|
||||
INIT_FUN: "init fun"
|
||||
};
|
||||
|
||||
Kotlin.classCount = 0;
|
||||
Kotlin.newClassIndex = function () {
|
||||
var tmp = Kotlin.classCount;
|
||||
Kotlin.classCount++;
|
||||
return tmp;
|
||||
};
|
||||
|
||||
function isNativeClass(obj) {
|
||||
return !(obj == null) && obj.$metadata$ == null;
|
||||
}
|
||||
|
||||
Kotlin.callGetter = function (thisObject, klass, propertyName) {
|
||||
var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);
|
||||
if (propertyDescriptor != null) {
|
||||
if (propertyDescriptor.get != null) {
|
||||
return propertyDescriptor.get.call(thisObject);
|
||||
}
|
||||
else if ("value" in propertyDescriptor) {
|
||||
return propertyDescriptor.value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
Kotlin.callSetter = function (thisObject, klass, propertyName, value) {
|
||||
var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);
|
||||
if (propertyDescriptor != null) {
|
||||
if (propertyDescriptor.set != null) {
|
||||
propertyDescriptor.set.call(thisObject, value);
|
||||
}
|
||||
else if ("value" in propertyDescriptor) {
|
||||
throw new Error("Assertion failed: Kotlin compiler should not generate simple JavaScript properties for overridable " +
|
||||
"Kotlin properties.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
return Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value);
|
||||
}
|
||||
};
|
||||
|
||||
function isInheritanceFromTrait(metadata, trait) {
|
||||
// TODO: return this optimization
|
||||
/*if (metadata == null || metadata.classIndex < trait.$metadata$.classIndex) {
|
||||
return false;
|
||||
}*/
|
||||
var baseClasses = metadata.baseClasses;
|
||||
var i;
|
||||
for (i = 0; i < baseClasses.length; i++) {
|
||||
if (baseClasses[i] === trait) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < baseClasses.length; i++) {
|
||||
if (isInheritanceFromTrait(baseClasses[i].$metadata$, trait)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @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.type === Kotlin.TYPE.OBJECT) {
|
||||
return object === klass;
|
||||
}
|
||||
}
|
||||
|
||||
// In WebKit (JavaScriptCore) for some interfaces from DOM typeof returns "object", nevertheless they can be used in RHS of instanceof
|
||||
if (isNativeClass(klass)) {
|
||||
return object instanceof klass;
|
||||
}
|
||||
|
||||
if (isTrait(klass) && object.constructor != null) {
|
||||
metadata = object.constructor.$metadata$;
|
||||
if (metadata != null) {
|
||||
return isInheritanceFromTrait(metadata, klass);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
function isTrait(klass) {
|
||||
var metadata = klass.$metadata$;
|
||||
return metadata != null && metadata.type === Kotlin.TYPE.TRAIT;
|
||||
}
|
||||
|
||||
// TODO Store callable references for members in class
|
||||
Kotlin.getCallableRefForMemberFunction = function (memberName) {
|
||||
return function () {
|
||||
var args = [].slice.call(arguments);
|
||||
var instance = args.shift();
|
||||
return instance[memberName].apply(instance, args);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForMemberFunction = function (receiver, memberName) {
|
||||
return function () {
|
||||
return receiver[memberName].apply(receiver, arguments);
|
||||
};
|
||||
};
|
||||
|
||||
// TODO Store callable references for extension functions in class
|
||||
// extFun expected receiver as the first argument
|
||||
Kotlin.getCallableRefForExtensionFunction = function (extFun) {
|
||||
return function () {
|
||||
return extFun.apply(null, arguments);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForExtensionFunction = function (receiver, extFun) {
|
||||
return function () {
|
||||
var args = [].slice.call(arguments);
|
||||
args.unshift(receiver);
|
||||
return extFun.apply(null, args);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForLocalExtensionFunction = function (extFun) {
|
||||
return function () {
|
||||
var args = [].slice.call(arguments);
|
||||
var instance = args.shift();
|
||||
return extFun.apply(instance, args);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForLocalExtensionFunction = function (receiver, extFun) {
|
||||
return function () {
|
||||
return extFun.apply(receiver, arguments);
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForConstructor = function (klass) {
|
||||
return function () {
|
||||
var obj = Object.create(klass.prototype);
|
||||
klass.apply(obj, arguments);
|
||||
return obj;
|
||||
};
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForTopLevelProperty = function(getter, setter, name) {
|
||||
var getFun = Function("getter", "return function " + name + "() { return getter(); }")(getter, setter);
|
||||
return getPropertyRefClass(getFun, "get", setter, "set_za3rmp$", propertyRefClassMetadataCache.zeroArg);
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForMemberProperty = function(name, isVar) {
|
||||
var getFun = Function("return function " + name + "(receiver) { return receiver['" + name + "']; }")();
|
||||
var setFun = isVar ? function(receiver, value) { receiver[name] = value; } : null;
|
||||
return getPropertyRefClass(getFun, "get_za3rmp$", setFun, "set_wn2jw4$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForMemberProperty = function(receiver, name, isVar) {
|
||||
var getFun = Function("receiver", "return function " + name + "() { return receiver['" + name + "']; }")(receiver);
|
||||
var setFun = isVar ? function(value) { receiver[name] = value; } : null;
|
||||
return getPropertyRefClass(getFun, "get", setFun, "set_za3rmp$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
Kotlin.getCallableRefForExtensionProperty = function(name, getFun, setFun) {
|
||||
var getFunWrapper = Function("getFun", "return function " + name + "(receiver, extensionReceiver) { return getFun(receiver, extensionReceiver) }")(getFun);
|
||||
return getPropertyRefClass(getFunWrapper, "get_za3rmp$", setFun, "set_wn2jw4$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
Kotlin.getBoundCallableRefForExtensionProperty = function(receiver, name, getFun, setFun) {
|
||||
var getFunWrapper = Function("receiver", "getFun", "return function " + name + "(extensionReceiver) { return getFun(receiver, extensionReceiver) }")(receiver, getFun);
|
||||
if (setFun) {
|
||||
setFun = setFun.bind(null, receiver);
|
||||
}
|
||||
return getPropertyRefClass(getFunWrapper, "get", setFun, "set_za3rmp$", propertyRefClassMetadataCache.oneArg);
|
||||
};
|
||||
|
||||
function getPropertyRefClass(getFun, getName, setFun, setName, cache) {
|
||||
var obj = getFun;
|
||||
var isMutable = typeof setFun === "function";
|
||||
obj.$metadata$ = getPropertyRefMetadata(isMutable ? cache.mutable : cache.immutable);
|
||||
obj[getName] = getFun;
|
||||
if (isMutable) {
|
||||
obj[setName] = setFun;
|
||||
}
|
||||
obj.constructor = obj;
|
||||
return obj;
|
||||
}
|
||||
|
||||
var propertyRefClassMetadataCache = {
|
||||
zeroArg: {
|
||||
mutable: { value: null, implementedInterface: function () {
|
||||
return Kotlin.kotlin.reflect.KMutableProperty0 }
|
||||
},
|
||||
immutable: { value: null, implementedInterface: function () {
|
||||
return Kotlin.kotlin.reflect.KProperty0 }
|
||||
}
|
||||
},
|
||||
oneArg: {
|
||||
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 = {
|
||||
baseClasses: [cache.implementedInterface()],
|
||||
baseClass: null,
|
||||
classIndex: Kotlin.newClassIndex(),
|
||||
functions: {},
|
||||
properties: {},
|
||||
types: {},
|
||||
staticMembers: {}
|
||||
};
|
||||
}
|
||||
return cache.value;
|
||||
}
|
||||
|
||||
////////////////////////////////// packages & modules //////////////////////////////
|
||||
|
||||
/**
|
||||
* @param {string} id
|
||||
* @param {Object} declaration
|
||||
*/
|
||||
Kotlin.defineModule = function (id, declaration) {
|
||||
};
|
||||
|
||||
Kotlin.defineInlineFunction = function(tag, fun) {
|
||||
return fun;
|
||||
};
|
||||
|
||||
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.imul = Math.imul || imul;
|
||||
|
||||
Kotlin.imulEmulated = imul;
|
||||
|
||||
function imul(a, b) {
|
||||
return ((a & 0xffff0000) * (b & 0xffff) + (a & 0xffff) * (b | 0)) | 0;
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {string} id
|
||||
* @param {Object} declaration
|
||||
*/
|
||||
Kotlin.defineModule = function (id, declaration) {
|
||||
};
|
||||
|
||||
Kotlin.defineInlineFunction = function(tag, fun) {
|
||||
return fun;
|
||||
};
|
||||
|
||||
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) {
|
||||
};
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
Kotlin.compareTo = function (a, b) {
|
||||
var typeA = typeof a;
|
||||
var typeB = typeof a;
|
||||
if (Kotlin.isChar(a) && typeB == "number") {
|
||||
return Kotlin.primitiveCompareTo(a.charCodeAt(0), b);
|
||||
}
|
||||
if (typeA == "number" && Kotlin.isChar(b)) {
|
||||
return Kotlin.primitiveCompareTo(a, b.charCodeAt(0));
|
||||
}
|
||||
if (typeA == "number" || typeA == "string") {
|
||||
return a < b ? -1 : a > b ? 1 : 0;
|
||||
}
|
||||
return a.compareTo_za3rmp$(b);
|
||||
};
|
||||
|
||||
Kotlin.primitiveCompareTo = function (a, b) {
|
||||
return a < b ? -1 : a > b ? 1 : 0;
|
||||
};
|
||||
|
||||
Kotlin.charInc = function (value) {
|
||||
return String.fromCharCode(value.charCodeAt(0)+1);
|
||||
};
|
||||
|
||||
Kotlin.charDec = function (value) {
|
||||
return String.fromCharCode(value.charCodeAt(0)-1);
|
||||
};
|
||||
|
||||
Kotlin.imul = Math.imul || imul;
|
||||
|
||||
Kotlin.imulEmulated = imul;
|
||||
|
||||
function imul(a, b) {
|
||||
return ((a & 0xffff0000) * (b & 0xffff) + (a & 0xffff) * (b | 0)) | 0;
|
||||
}
|
||||
@@ -14,7 +14,6 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// Shims for String
|
||||
if (typeof String.prototype.startsWith === "undefined") {
|
||||
String.prototype.startsWith = function(searchString, position) {
|
||||
position = position || 0;
|
||||
@@ -0,0 +1,162 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* 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.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
Kotlin.TYPE = {
|
||||
CLASS: "class",
|
||||
TRAIT: "trait",
|
||||
OBJECT: "object",
|
||||
INIT_FUN: "init fun"
|
||||
};
|
||||
|
||||
Kotlin.classCount = 0;
|
||||
Kotlin.newClassIndex = function () {
|
||||
var tmp = Kotlin.classCount;
|
||||
Kotlin.classCount++;
|
||||
return tmp;
|
||||
};
|
||||
|
||||
function isNativeClass(obj) {
|
||||
return !(obj == null) && obj.$metadata$ == null;
|
||||
}
|
||||
|
||||
Kotlin.callGetter = function (thisObject, klass, propertyName) {
|
||||
var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);
|
||||
if (propertyDescriptor != null) {
|
||||
if (propertyDescriptor.get != null) {
|
||||
return propertyDescriptor.get.call(thisObject);
|
||||
}
|
||||
else if ("value" in propertyDescriptor) {
|
||||
return propertyDescriptor.value;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return Kotlin.callGetter(thisObject, Object.getPrototypeOf(klass), propertyName);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
Kotlin.callSetter = function (thisObject, klass, propertyName, value) {
|
||||
var propertyDescriptor = Object.getOwnPropertyDescriptor(klass, propertyName);
|
||||
if (propertyDescriptor != null) {
|
||||
if (propertyDescriptor.set != null) {
|
||||
propertyDescriptor.set.call(thisObject, value);
|
||||
}
|
||||
else if ("value" in propertyDescriptor) {
|
||||
throw new Error("Assertion failed: Kotlin compiler should not generate simple JavaScript properties for overridable " +
|
||||
"Kotlin properties.");
|
||||
}
|
||||
}
|
||||
else {
|
||||
return Kotlin.callSetter(thisObject, Object.getPrototypeOf(klass), propertyName, value);
|
||||
}
|
||||
};
|
||||
|
||||
function isInheritanceFromTrait(metadata, trait) {
|
||||
// TODO: return this optimization
|
||||
/*if (metadata == null || metadata.classIndex < trait.$metadata$.classIndex) {
|
||||
return false;
|
||||
}*/
|
||||
var baseClasses = metadata.baseClasses;
|
||||
var i;
|
||||
for (i = 0; i < baseClasses.length; i++) {
|
||||
if (baseClasses[i] === trait) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < baseClasses.length; i++) {
|
||||
if (isInheritanceFromTrait(baseClasses[i].$metadata$, trait)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @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.type === Kotlin.TYPE.OBJECT) {
|
||||
return object === klass;
|
||||
}
|
||||
}
|
||||
|
||||
// In WebKit (JavaScriptCore) for some interfaces from DOM typeof returns "object", nevertheless they can be used in RHS of instanceof
|
||||
if (isNativeClass(klass)) {
|
||||
return object instanceof klass;
|
||||
}
|
||||
|
||||
if (isTrait(klass) && object.constructor != null) {
|
||||
metadata = object.constructor.$metadata$;
|
||||
if (metadata != null) {
|
||||
return isInheritanceFromTrait(metadata, klass);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
function isTrait(klass) {
|
||||
var metadata = klass.$metadata$;
|
||||
return metadata != null && metadata.type === Kotlin.TYPE.TRAIT;
|
||||
}
|
||||
|
||||
Kotlin.isNumber = function (a) {
|
||||
return typeof a == "number" || a instanceof Kotlin.Long;
|
||||
};
|
||||
|
||||
Kotlin.isChar = function (value) {
|
||||
return (typeof value) == "string" && value.length == 1;
|
||||
};
|
||||
|
||||
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);
|
||||
};
|
||||
Reference in New Issue
Block a user