[JS IR BE] Fix runtime compareTo(Number, Long)
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
// IGNORE_BACKEND: NATIVE
|
// IGNORE_BACKEND: NATIVE
|
||||||
// IGNORE_BACKEND: JS_IR
|
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
if (0.toByte().compareTo(-0.0) != 1) return "fail 1.1"
|
if (0.toByte().compareTo(-0.0) != 1) return "fail 1.1"
|
||||||
if (0.toByte().compareTo(-0.0F) != 1) return "fail 1.2"
|
if (0.toByte().compareTo(-0.0F) != 1) return "fail 1.2"
|
||||||
|
|||||||
@@ -8,19 +8,19 @@ package kotlin.js
|
|||||||
|
|
||||||
// Adopted from misc.js
|
// Adopted from misc.js
|
||||||
|
|
||||||
fun compareTo(a: dynamic, b: dynamic): Int {
|
fun compareTo(a: dynamic, b: dynamic): Int = when (typeOf(a)) {
|
||||||
var typeA = typeOf(a)
|
"number" -> when {
|
||||||
if (typeA == "number") {
|
typeOf(b) == "number" ->
|
||||||
if (typeOf(b) == "number") {
|
doubleCompareTo(a, b)
|
||||||
return doubleCompareTo(a, b)
|
b is Long ->
|
||||||
}
|
doubleCompareTo(a, b.toDouble())
|
||||||
return primitiveCompareTo(a, b)
|
else ->
|
||||||
}
|
primitiveCompareTo(a, b)
|
||||||
if (typeA == "string" || typeA == "boolean") {
|
|
||||||
return primitiveCompareTo(a, b)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return compareToDoNotIntrinsicify(a, b)
|
"string", "boolean" -> primitiveCompareTo(a, b)
|
||||||
|
|
||||||
|
else -> compareToDoNotIntrinsicify(a, b)
|
||||||
}
|
}
|
||||||
|
|
||||||
@DoNotIntrinsify
|
@DoNotIntrinsify
|
||||||
|
|||||||
Reference in New Issue
Block a user