blob: 9202e013824f942c2f6adf18b26a2d3324408b05 [file] [log] [blame]
// IGNORE_BACKEND: WASM
// WASM_MUTE_REASON: IGNORED_IN_JS
// !LANGUAGE: -ProperIeee754Comparisons
// DONT_TARGET_EXACT_BACKEND: JS_IR
// DONT_TARGET_EXACT_BACKEND: JS_IR_ES6
fun equals1(a: Double, b: Double?) = a == b
fun equals2(a: Double?, b: Double?) = a!! == b!!
fun equals3(a: Double?, b: Double?) = a != null && a == b
fun equals4(a: Double?, b: Double?) = if (a is Double) a == b else null!!
fun equals5(a: Any?, b: Any?) = if (a is Double && b is Double?) a == b else null!!
fun equals6(a: Any?, b: Any?) = if (a is Double? && b is Double) a == b else null!!
fun equals7(a: Double?, b: Double?) = a == b
fun equals8(a: Any?, b: Any?) = if (a is Double? && b is Double?) a == b else null!!
fun box(): String {
if (!equals1(-0.0, 0.0)) return "fail 1"
if (!equals2(-0.0, 0.0)) return "fail 2"
if (!equals3(-0.0, 0.0)) return "fail 3"
if (!equals4(-0.0, 0.0)) return "fail 4"
// Smart casts behavior in 1.2
if (equals5(-0.0, 0.0)) return "fail 5"
if (equals6(-0.0, 0.0)) return "fail 6"
if (!equals7(-0.0, 0.0)) return "fail 7"
// Smart casts behavior in 1.2
if (equals8(-0.0, 0.0)) return "fail 8"
if (!equals8(null, null)) return "fail 9"
if (equals8(null, 0.0)) return "fail 10"
if (equals8(0.0, null)) return "fail 11"
return "OK"
}