57 lines
1.7 KiB
Kotlin
Vendored
57 lines
1.7 KiB
Kotlin
Vendored
// !LANGUAGE: +ProperIeee754Comparisons
|
|
// EXPECTED_REACHABLE_NODES: 1328
|
|
package foo
|
|
|
|
|
|
fun testNullable(): String {
|
|
val undefined: Double? = js("undefined")
|
|
val doubleNull: Double? = null
|
|
|
|
val plusZero: Double? = +0.0
|
|
val minusZero: Double? = -0.0
|
|
|
|
if ((+0.0).equals(minusZero)) return "Total order fail"
|
|
if (plusZero != minusZero) return "IEEE 754 equals fail"
|
|
|
|
if (plusZero == doubleNull) return "+0.0 != null fail"
|
|
if (plusZero == undefined) return "+0.0 != undefined fail"
|
|
|
|
if (undefined != doubleNull) return "undefined == null fail"
|
|
if (undefined != undefined) return "undefined = undefined fail"
|
|
if (doubleNull != doubleNull) return "doubleNull = doubleNull fail"
|
|
|
|
// Double == Float
|
|
val plusZeroAny: Any? = +0.0
|
|
val minusZeroAny: Any? = -0.0f
|
|
|
|
if (plusZeroAny is Double && minusZeroAny is Float) {
|
|
if (plusZeroAny != minusZeroAny) return "IEEE 754 quals fail 2"
|
|
}
|
|
|
|
return "OK"
|
|
}
|
|
|
|
fun box(): String {
|
|
val plusZero: Double = +0.0
|
|
val minusZero: Double = -0.0
|
|
|
|
if (plusZero.equals(minusZero)) return "Total order fail"
|
|
if (plusZero != minusZero) return "IEEE 754 equals fail"
|
|
|
|
val plusZeroFloat: Float = +0.0f
|
|
val minusZeroFloat: Float = -0.0f
|
|
|
|
if (plusZeroFloat.equals(minusZeroFloat)) return "Total order fail 2"
|
|
if (plusZeroFloat != minusZeroFloat) return "IEEE 754 equals fail 2"
|
|
|
|
if ((plusZero as Any) == (minusZero as Any)) return "Total order fail 4"
|
|
if ((plusZeroFloat as Any) == (minusZeroFloat as Any)) return "Total order fail 5"
|
|
if (plusZero == (minusZero as Any)) return "Total order fail 6"
|
|
|
|
val nullableRes = testNullable()
|
|
if (nullableRes != "OK")
|
|
return "Nullable" + nullableRes
|
|
|
|
return "OK"
|
|
}
|