[JS IR BE] Fix arrays type checks
This commit is contained in:
@@ -90,12 +90,16 @@ fun isObject(obj: dynamic): Boolean {
|
||||
}
|
||||
}
|
||||
|
||||
public fun isArray(obj: Any): Boolean {
|
||||
private fun isJsArray(obj: Any): Boolean {
|
||||
return js("Array.isArray(obj)").unsafeCast<Boolean>()
|
||||
}
|
||||
|
||||
public fun isArray(obj: Any): Boolean {
|
||||
return isJsArray(obj) && js("!obj.\$type\$").unsafeCast<Boolean>()
|
||||
}
|
||||
|
||||
public fun isArrayish(o: dynamic) =
|
||||
isArray(o) || js("ArrayBuffer.isView(o)").unsafeCast<Boolean>()
|
||||
isJsArray(o) || js("ArrayBuffer.isView(o)").unsafeCast<Boolean>()
|
||||
|
||||
|
||||
public fun isChar(c: Any): Boolean {
|
||||
@@ -103,14 +107,14 @@ public fun isChar(c: Any): Boolean {
|
||||
}
|
||||
|
||||
// TODO: Distinguish Boolean/Byte and Short/Char
|
||||
public fun isBooleanArray(a: dynamic): Boolean = isArray(a) && a.`$type$` == "BooleanArray"
|
||||
public fun isBooleanArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` == "BooleanArray"
|
||||
public fun isByteArray(a: dynamic): Boolean = js("a instanceof Int8Array").unsafeCast<Boolean>()
|
||||
public fun isShortArray(a: dynamic): Boolean = js("a instanceof Int16Array").unsafeCast<Boolean>()
|
||||
public fun isCharArray(a: dynamic): Boolean = isArray(a) && a.`$type$` == "CharArray"
|
||||
public fun isCharArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` == "CharArray"
|
||||
public fun isIntArray(a: dynamic): Boolean = js("a instanceof Int32Array").unsafeCast<Boolean>()
|
||||
public fun isFloatArray(a: dynamic): Boolean = js("a instanceof Float32Array").unsafeCast<Boolean>()
|
||||
public fun isDoubleArray(a: dynamic): Boolean = js("a instanceof Float64Array").unsafeCast<Boolean>()
|
||||
public fun isLongArray(a: dynamic): Boolean = isArray(a) && a.`$type$` == "LongArray"
|
||||
public fun isLongArray(a: dynamic): Boolean = isJsArray(a) && a.`$type$` == "LongArray"
|
||||
|
||||
|
||||
internal fun jsIn(x: String, y: dynamic): Boolean = js("x in y")
|
||||
|
||||
Reference in New Issue
Block a user