Added intrinsics for nullable Double/Float equals check
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
fun myEquals(a: Double?, b: Double?) = a == b
|
||||
|
||||
fun myEquals1(a: Double?, b: Double) = a == b
|
||||
|
||||
fun myEquals2(a: Double, b: Double?) = a == b
|
||||
|
||||
fun myEquals0(a: Double, b: Double) = a == b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!myEquals(null, null)) return "fail 1"
|
||||
if (myEquals(null, 0.0)) return "fail 2"
|
||||
if (myEquals(0.0, null)) return "fail 3"
|
||||
if (!myEquals(0.0, 0.0)) return "fail 4"
|
||||
|
||||
if (myEquals1(null, 0.0)) return "fail 5"
|
||||
if (!myEquals1(0.0, 0.0)) return "fail 6"
|
||||
|
||||
if (myEquals2(0.0, null)) return "fail 7"
|
||||
if (!myEquals2(0.0, 0.0)) return "fail 8"
|
||||
|
||||
if (!myEquals0(0.0, 0.0)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z
|
||||
// 1 areEqual \(DLjava/lang/Double;\)Z
|
||||
// 1 areEqual \(Ljava/lang/Double;D\)Z
|
||||
// 3 areEqual
|
||||
@@ -0,0 +1,29 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
|
||||
fun myEquals(a: Double?, b: Double?) = a == b
|
||||
|
||||
fun myEquals1(a: Double?, b: Double) = a == b
|
||||
|
||||
fun myEquals2(a: Double, b: Double?) = a == b
|
||||
|
||||
fun myEquals0(a: Double, b: Double) = a == b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!myEquals(null, null)) return "fail 1"
|
||||
if (myEquals(null, 0.0)) return "fail 2"
|
||||
if (myEquals(0.0, null)) return "fail 3"
|
||||
if (!myEquals(0.0, 0.0)) return "fail 4"
|
||||
|
||||
if (myEquals1(null, 0.0)) return "fail 5"
|
||||
if (!myEquals1(0.0, 0.0)) return "fail 6"
|
||||
|
||||
if (myEquals2(0.0, null)) return "fail 7"
|
||||
if (!myEquals2(0.0, 0.0)) return "fail 8"
|
||||
|
||||
if (!myEquals0(0.0, 0.0)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 areEquals
|
||||
@@ -0,0 +1,30 @@
|
||||
fun myNotEquals(a: Double?, b: Double?) = a != b
|
||||
|
||||
fun myNotEquals1(a: Double?, b: Double) = a != b
|
||||
|
||||
fun myNotEquals2(a: Double, b: Double?) = a != b
|
||||
|
||||
fun myNotEquals0(a: Double, b: Double) = a != b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (myNotEquals(null, null)) return "fail 1"
|
||||
if (!myNotEquals(null, 0.0)) return "fail 2"
|
||||
if (!myNotEquals(0.0, null)) return "fail 3"
|
||||
if (myNotEquals(0.0, 0.0)) return "fail 4"
|
||||
|
||||
if (!myNotEquals1(null, 0.0)) return "fail 5"
|
||||
if (myNotEquals1(0.0, 0.0)) return "fail 6"
|
||||
|
||||
if (!myNotEquals2(0.0, null)) return "fail 7"
|
||||
if (myNotEquals2(0.0, 0.0)) return "fail 8"
|
||||
|
||||
if (myNotEquals0(0.0, 0.0)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z
|
||||
// 1 areEqual \(DLjava/lang/Double;\)Z
|
||||
// 1 areEqual \(Ljava/lang/Double;D\)Z
|
||||
// 3 areEqual
|
||||
@@ -0,0 +1,28 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
fun myNotEquals(a: Double?, b: Double?) = a != b
|
||||
|
||||
fun myNotEquals1(a: Double?, b: Double) = a != b
|
||||
|
||||
fun myNotEquals2(a: Double, b: Double?) = a != b
|
||||
|
||||
fun myNotEquals0(a: Double, b: Double) = a != b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (myNotEquals(null, null)) return "fail 1"
|
||||
if (!myNotEquals(null, 0.0)) return "fail 2"
|
||||
if (!myNotEquals(0.0, null)) return "fail 3"
|
||||
if (myNotEquals(0.0, 0.0)) return "fail 4"
|
||||
|
||||
if (!myNotEquals1(null, 0.0)) return "fail 5"
|
||||
if (myNotEquals1(0.0, 0.0)) return "fail 6"
|
||||
|
||||
if (!myNotEquals2(0.0, null)) return "fail 7"
|
||||
if (myNotEquals2(0.0, 0.0)) return "fail 8"
|
||||
|
||||
if (myNotEquals0(0.0, 0.0)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 areEquals
|
||||
@@ -0,0 +1,30 @@
|
||||
fun myEquals(a: Float?, b: Float?) = a == b
|
||||
|
||||
fun myEquals1(a: Float?, b: Float) = a == b
|
||||
|
||||
fun myEquals2(a: Float, b: Float?) = a == b
|
||||
|
||||
fun myEquals0(a: Float, b: Float) = a == b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!myEquals(null, null)) return "fail 1"
|
||||
if (myEquals(null, 0.0F)) return "fail 2"
|
||||
if (myEquals(0.0F, null)) return "fail 3"
|
||||
if (!myEquals(0.0F, 0.0F)) return "fail 4"
|
||||
|
||||
if (myEquals1(null, 0.0F)) return "fail 5"
|
||||
if (!myEquals1(0.0F, 0.0F)) return "fail 6"
|
||||
|
||||
if (myEquals2(0.0F, null)) return "fail 7"
|
||||
if (!myEquals2(0.0F, 0.0F)) return "fail 8"
|
||||
|
||||
if (!myEquals0(0.0F, 0.0F)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z
|
||||
// 1 areEqual \(FLjava/lang/Float;\)Z
|
||||
// 1 areEqual \(Ljava/lang/Float;F\)Z
|
||||
// 3 areEqual
|
||||
@@ -0,0 +1,28 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
fun myEquals(a: Float?, b: Float?) = a == b
|
||||
|
||||
fun myEquals1(a: Float?, b: Float) = a == b
|
||||
|
||||
fun myEquals2(a: Float, b: Float?) = a == b
|
||||
|
||||
fun myEquals0(a: Float, b: Float) = a == b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!myEquals(null, null)) return "fail 1"
|
||||
if (myEquals(null, 0.0F)) return "fail 2"
|
||||
if (myEquals(0.0F, null)) return "fail 3"
|
||||
if (!myEquals(0.0F, 0.0F)) return "fail 4"
|
||||
|
||||
if (myEquals1(null, 0.0F)) return "fail 5"
|
||||
if (!myEquals1(0.0F, 0.0F)) return "fail 6"
|
||||
|
||||
if (myEquals2(0.0F, null)) return "fail 7"
|
||||
if (!myEquals2(0.0F, 0.0F)) return "fail 8"
|
||||
|
||||
if (!myEquals0(0.0F, 0.0F)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 areEquals
|
||||
@@ -0,0 +1,30 @@
|
||||
fun myNotEquals(a: Float?, b: Float?) = a != b
|
||||
|
||||
fun myNotEquals1(a: Float?, b: Float) = a != b
|
||||
|
||||
fun myNotEquals2(a: Float, b: Float?) = a != b
|
||||
|
||||
fun myNotEquals0(a: Float, b: Float) = a != b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (myNotEquals(null, null)) return "fail 1"
|
||||
if (!myNotEquals(null, 0.0F)) return "fail 2"
|
||||
if (!myNotEquals(0.0F, null)) return "fail 3"
|
||||
if (myNotEquals(0.0F, 0.0F)) return "fail 4"
|
||||
|
||||
if (!myNotEquals1(null, 0.0F)) return "fail 5"
|
||||
if (myNotEquals1(0.0F, 0.0F)) return "fail 6"
|
||||
|
||||
if (!myNotEquals2(0.0F, null)) return "fail 7"
|
||||
if (myNotEquals2(0.0F, 0.0F)) return "fail 8"
|
||||
|
||||
if (myNotEquals0(0.0F, 0.0F)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z
|
||||
// 1 areEqual \(FLjava/lang/Float;\)Z
|
||||
// 1 areEqual \(Ljava/lang/Float;F\)Z
|
||||
// 3 areEqual
|
||||
@@ -0,0 +1,28 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
fun myNotEquals(a: Float?, b: Float?) = a != b
|
||||
|
||||
fun myNotEquals1(a: Float?, b: Float) = a != b
|
||||
|
||||
fun myNotEquals2(a: Float, b: Float?) = a != b
|
||||
|
||||
fun myNotEquals0(a: Float, b: Float) = a != b
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (myNotEquals(null, null)) return "fail 1"
|
||||
if (!myNotEquals(null, 0.0F)) return "fail 2"
|
||||
if (!myNotEquals(0.0F, null)) return "fail 3"
|
||||
if (myNotEquals(0.0F, 0.0F)) return "fail 4"
|
||||
|
||||
if (!myNotEquals1(null, 0.0F)) return "fail 5"
|
||||
if (myNotEquals1(0.0F, 0.0F)) return "fail 6"
|
||||
|
||||
if (!myNotEquals2(0.0F, null)) return "fail 7"
|
||||
if (myNotEquals2(0.0F, 0.0F)) return "fail 8"
|
||||
|
||||
if (myNotEquals0(0.0F, 0.0F)) return "fail 9"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 areEquals
|
||||
@@ -0,0 +1,23 @@
|
||||
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 equals8(a: Any?, b: Any?) = if (a is Double? && b is Double?) a == b else null!!
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!equals5(-0.0, 0.0)) return "fail 5"
|
||||
if (!equals6(-0.0, 0.0)) return "fail 6"
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
// 1 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z
|
||||
// 1 areEqual \(DLjava/lang/Double;\)Z
|
||||
// 1 areEqual \(Ljava/lang/Double;D\)Z
|
||||
// 3 areEqual
|
||||
@@ -0,0 +1,22 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
|
||||
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 equals8(a: Any?, b: Any?) = if (a is Double? && b is Double?) a == b else null!!
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!equals5(-0.0, 0.0)) return "fail 5"
|
||||
if (!equals6(-0.0, 0.0)) return "fail 6"
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
// 0 areEqual
|
||||
@@ -0,0 +1,23 @@
|
||||
fun equals5(a: Any?, b: Any?) = if (a is Float && b is Float?) a == b else null!!
|
||||
|
||||
fun equals6(a: Any?, b: Any?) = if (a is Float? && b is Float) a == b else null!!
|
||||
|
||||
fun equals8(a: Any?, b: Any?) = if (a is Float? && b is Float?) a == b else null!!
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!equals5(-0.0F, 0.0F)) return "fail 5"
|
||||
if (!equals6(-0.0F, 0.0F)) return "fail 6"
|
||||
|
||||
if (!equals8(-0.0F, 0.0F)) return "fail 8"
|
||||
if (!equals8(null, null)) return "fail 9"
|
||||
if (equals8(null, 0.0F)) return "fail 10"
|
||||
if (equals8(0.0F, null)) return "fail 11"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 1 areEqual \(Ljava/lang/Float;Ljava/lang/Float;\)Z
|
||||
// 1 areEqual \(FLjava/lang/Float;\)Z
|
||||
// 1 areEqual \(Ljava/lang/Float;F\)Z
|
||||
// 3 areEqual
|
||||
@@ -0,0 +1,22 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
|
||||
fun equals5(a: Any?, b: Any?) = if (a is Float && b is Float?) a == b else null!!
|
||||
|
||||
fun equals6(a: Any?, b: Any?) = if (a is Float? && b is Float) a == b else null!!
|
||||
|
||||
fun equals8(a: Any?, b: Any?) = if (a is Float? && b is Float?) a == b else null!!
|
||||
|
||||
|
||||
fun box(): String {
|
||||
if (!equals5(-0.0F, 0.0F)) return "fail 5"
|
||||
if (!equals6(-0.0F, 0.0F)) return "fail 6"
|
||||
|
||||
if (!equals8(-0.0F, 0.0F)) return "fail 8"
|
||||
if (!equals8(null, null)) return "fail 9"
|
||||
if (equals8(null, 0.0F)) return "fail 10"
|
||||
if (equals8(0.0F, null)) return "fail 11"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 areEqual
|
||||
@@ -0,0 +1,31 @@
|
||||
fun box(): String {
|
||||
val plusZero: Any = 0.0
|
||||
val minusZero: Any = -0.0
|
||||
val nullDouble: Double? = null
|
||||
if (plusZero is Double) {
|
||||
when (plusZero) {
|
||||
nullDouble -> {
|
||||
return "fail 1"
|
||||
}
|
||||
-0.0 -> {
|
||||
}
|
||||
else -> return "fail 2"
|
||||
}
|
||||
|
||||
if (minusZero is Double) {
|
||||
when (plusZero) {
|
||||
nullDouble -> {
|
||||
return "fail 3"
|
||||
}
|
||||
minusZero -> {
|
||||
}
|
||||
else -> return "fail 4"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 2 areEqual \(DLjava/lang/Double;\)Z
|
||||
// 2 areEqual
|
||||
@@ -0,0 +1,31 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
fun box(): String {
|
||||
val plusZero: Any = 0.0
|
||||
val minusZero: Any = -0.0
|
||||
val nullDouble: Double? = null
|
||||
if (plusZero is Double) {
|
||||
when (plusZero) {
|
||||
nullDouble -> {
|
||||
return "fail 1"
|
||||
}
|
||||
-0.0 -> {
|
||||
}
|
||||
else -> return "fail 2"
|
||||
}
|
||||
|
||||
if (minusZero is Double) {
|
||||
when (plusZero) {
|
||||
nullDouble -> {
|
||||
return "fail 3"
|
||||
}
|
||||
minusZero -> {
|
||||
}
|
||||
else -> return "fail 4"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 0 areEqual
|
||||
@@ -0,0 +1,31 @@
|
||||
fun box(): String {
|
||||
val nullValue: Any? = null
|
||||
val nullDouble: Double? = null
|
||||
val minusZero: Any = -0.0
|
||||
if (nullValue is Double?) {
|
||||
when (nullValue) {
|
||||
-0.0 -> {
|
||||
return "fail 1"
|
||||
}
|
||||
nullDouble -> {}
|
||||
else -> return "fail 2"
|
||||
}
|
||||
|
||||
if (minusZero is Double) {
|
||||
when (nullValue) {
|
||||
minusZero -> {
|
||||
return "fail 3"
|
||||
}
|
||||
nullDouble -> {
|
||||
}
|
||||
else -> return "fail 4"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
|
||||
// 2 areEqual \(Ljava/lang/Double;Ljava/lang/Double;\)Z
|
||||
// 2 areEqual \(Ljava/lang/Double;D\)Z
|
||||
// 4 areEqual
|
||||
@@ -0,0 +1,29 @@
|
||||
// LANGUAGE_VERSION: 1.0
|
||||
fun box(): String {
|
||||
val nullValue: Any? = null
|
||||
val nullDouble: Double? = null
|
||||
val minusZero: Any = -0.0
|
||||
if (nullValue is Double?) {
|
||||
when (nullValue) {
|
||||
-0.0 -> {
|
||||
return "fail 1"
|
||||
}
|
||||
nullDouble -> {}
|
||||
else -> return "fail 2"
|
||||
}
|
||||
|
||||
if (minusZero is Double) {
|
||||
when (nullValue) {
|
||||
minusZero -> {
|
||||
return "fail 3"
|
||||
}
|
||||
nullDouble -> {
|
||||
}
|
||||
else -> return "fail 4"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
// 0 areEqual
|
||||
Reference in New Issue
Block a user