Add more tests for inline class equality with nullable arguments

This commit is contained in:
Steven Schäfer
2019-09-17 16:14:26 +02:00
committed by Alexander Udalov
parent 1833a69c87
commit ce3ef4e4d0
7 changed files with 74 additions and 7 deletions
@@ -12,6 +12,8 @@ fun isNotEqualAnyRight(s: Any?, t: A) = s != t
fun isNotEqualSameNullable(s: A?, t: A?) = s != t
fun isNotEqualAnyNullableLeft(s: A?, t: Any?) = s != t
fun isNotEqualAnyNullableRight(s: Any?, t: A?) = s != t
fun isNotEqualNullableUnboxedLeft(s: A, t: A?) = s != t
fun isNotEqualNullableUnboxedRight(s: A?, t: A) = s != t
fun box(): String {
if (!isNotNullVacuousLeft(A(""))) return "Fail 1"
@@ -45,5 +47,11 @@ fun box(): String {
if (!isNotEqualAnyNullableRight("", null)) return "Fail 29"
if (!isNotEqualAnyNullableRight(null, A(""))) return "Fail 30"
if (!isNotEqualAnyNullableRight(A(""), A("a"))) return "Fail 31"
if (!isNotEqualNullableUnboxedLeft(A(""), A("a"))) return "Fail 32"
if (isNotEqualNullableUnboxedLeft(A(""), A(""))) return "Fail 33"
if (!isNotEqualNullableUnboxedRight(A(""), A("a"))) return "Fail 34"
if (isNotEqualNullableUnboxedRight(A("a"), A("a"))) return "Fail 35"
if (!isNotEqualNullableUnboxedLeft(A(""), null)) return "Fail 36"
if (!isNotEqualNullableUnboxedRight(null, A(""))) return "Fail 37"
return "OK"
}
@@ -12,6 +12,8 @@ fun isNotEqualAnyRight(s: Any?, t: A) = s != t
fun isNotEqualSameNullable(s: A?, t: A?) = s != t
fun isNotEqualAnyNullableLeft(s: A?, t: Any?) = s != t
fun isNotEqualAnyNullableRight(s: Any?, t: A?) = s != t
fun isNotEqualNullableUnboxedLeft(s: A, t: A?) = s != t
fun isNotEqualNullableUnboxedRight(s: A?, t: A) = s != t
fun box(): String {
if (!isNotNullVacuousLeft(A(0))) return "Fail 1"
@@ -57,5 +59,15 @@ fun box(): String {
if (!isNotEqualSameNullable(A(null), null)) return "Fail 42"
if (!isNotEqualSameNullable(null, A(null))) return "Fail 43"
if (!isNotEqualNullableUnboxedLeft(A(0), A(1))) return "Fail 44"
if (isNotEqualNullableUnboxedLeft(A(0), A(0))) return "Fail 45"
if (!isNotEqualNullableUnboxedRight(A(0), A(1))) return "Fail 46"
if (isNotEqualNullableUnboxedRight(A(1), A(1))) return "Fail 47"
if (!isNotEqualNullableUnboxedLeft(A(0), null)) return "Fail 48"
if (!isNotEqualNullableUnboxedRight(null, A(1))) return "Fail 49"
if (!isNotEqualNullableUnboxedRight(null, A(null))) return "Fail 50"
if (!isNotEqualNullableUnboxedLeft(A(null), null)) return "Fail 51"
return "OK"
}
@@ -12,6 +12,8 @@ fun isNotEqualAnyRight(s: Any?, t: A) = s != t
fun isNotEqualSameNullable(s: A?, t: A?) = s != t
fun isNotEqualAnyNullableLeft(s: A?, t: Any?) = s != t
fun isNotEqualAnyNullableRight(s: Any?, t: A?) = s != t
fun isNotEqualNullableUnboxedLeft(s: A, t: A?) = s != t
fun isNotEqualNullableUnboxedRight(s: A?, t: A) = s != t
fun box(): String {
if (!isNotNullVacuousLeft(A(0))) return "Fail 1"
@@ -45,5 +47,11 @@ fun box(): String {
if (!isNotEqualAnyNullableRight(0, null)) return "Fail 29"
if (!isNotEqualAnyNullableRight(null, A(0))) return "Fail 30"
if (!isNotEqualAnyNullableRight(A(0), A(1))) return "Fail 31"
if (!isNotEqualNullableUnboxedLeft(A(0), A(1))) return "Fail 32"
if (isNotEqualNullableUnboxedLeft(A(0), A(0))) return "Fail 33"
if (!isNotEqualNullableUnboxedRight(A(0), A(1))) return "Fail 34"
if (isNotEqualNullableUnboxedRight(A(1), A(1))) return "Fail 35"
if (!isNotEqualNullableUnboxedLeft(A(0), null)) return "Fail 36"
if (!isNotEqualNullableUnboxedRight(null, A(1))) return "Fail 37"
return "OK"
}
@@ -12,6 +12,8 @@ fun isEqualAnyRight(s: Any?, t: A) = s == t
fun isEqualSameNullable(s: A?, t: A?) = s == t
fun isEqualAnyNullableLeft(s: A?, t: Any?) = s == t
fun isEqualAnyNullableRight(s: Any?, t: A?) = s == t
fun isEqualNullableUnboxedLeft(s: A, t: A?) = s == t
fun isEqualNullableUnboxedRight(s: A?, t: A) = s == t
fun box(): String {
if (isNullVacuousLeft(A(""))) return "Fail 1"
@@ -45,5 +47,11 @@ fun box(): String {
if (isEqualAnyNullableRight("", null)) return "Fail 29"
if (isEqualAnyNullableRight(null, A(""))) return "Fail 30"
if (isEqualAnyNullableRight(A(""), A("a"))) return "Fail 31"
if (isEqualNullableUnboxedLeft(A(""), A("a"))) return "Fail 32"
if (!isEqualNullableUnboxedLeft(A(""), A(""))) return "Fail 33"
if (isEqualNullableUnboxedRight(A(""), A("a"))) return "Fail 34"
if (!isEqualNullableUnboxedRight(A("a"), A("a"))) return "Fail 35"
if (isEqualNullableUnboxedLeft(A(""), null)) return "Fail 36"
if (isEqualNullableUnboxedRight(null, A(""))) return "Fail 37"
return "OK"
}
@@ -12,6 +12,8 @@ fun isEqualAnyRight(s: Any?, t: A) = s == t
fun isEqualSameNullable(s: A?, t: A?) = s == t
fun isEqualAnyNullableLeft(s: A?, t: Any?) = s == t
fun isEqualAnyNullableRight(s: Any?, t: A?) = s == t
fun isEqualNullableUnboxedLeft(s: A, t: A?) = s == t
fun isEqualNullableUnboxedRight(s: A?, t: A) = s == t
fun box(): String {
if (isNullVacuousLeft(A(0))) return "Fail 1"
@@ -57,5 +59,15 @@ fun box(): String {
if (isEqualSameNullable(A(null), null)) return "Fail 42"
if (isEqualSameNullable(null, A(null))) return "Fail 43"
if (isEqualNullableUnboxedLeft(A(0), A(1))) return "Fail 44"
if (!isEqualNullableUnboxedLeft(A(0), A(0))) return "Fail 45"
if (isEqualNullableUnboxedRight(A(0), A(1))) return "Fail 46"
if (!isEqualNullableUnboxedRight(A(1), A(1))) return "Fail 47"
if (isEqualNullableUnboxedLeft(A(0), null)) return "Fail 48"
if (isEqualNullableUnboxedRight(null, A(1))) return "Fail 49"
if (isEqualNullableUnboxedRight(null, A(null))) return "Fail 50"
if (isEqualNullableUnboxedLeft(A(null), null)) return "Fail 51"
return "OK"
}
@@ -12,6 +12,8 @@ fun isEqualAnyRight(s: Any?, t: A) = s == t
fun isEqualSameNullable(s: A?, t: A?) = s == t
fun isEqualAnyNullableLeft(s: A?, t: Any?) = s == t
fun isEqualAnyNullableRight(s: Any?, t: A?) = s == t
fun isEqualNullableUnboxedLeft(s: A, t: A?) = s == t
fun isEqualNullableUnboxedRight(s: A?, t: A) = s == t
fun box(): String {
if (isNullVacuousLeft(A(0))) return "Fail 1"
@@ -45,5 +47,11 @@ fun box(): String {
if (isEqualAnyNullableRight(0, null)) return "Fail 29"
if (isEqualAnyNullableRight(null, A(0))) return "Fail 30"
if (isEqualAnyNullableRight(A(0), A(1))) return "Fail 31"
if (isEqualNullableUnboxedLeft(A(0), A(1))) return "Fail 32"
if (!isEqualNullableUnboxedLeft(A(0), A(0))) return "Fail 33"
if (isEqualNullableUnboxedRight(A(0), A(1))) return "Fail 34"
if (!isEqualNullableUnboxedRight(A(1), A(1))) return "Fail 35"
if (isEqualNullableUnboxedLeft(A(0), null)) return "Fail 36"
if (isEqualNullableUnboxedRight(null, A(1))) return "Fail 37"
return "OK"
}
@@ -21,6 +21,10 @@ fun isEqualAnyLeftA(s: A, t: Any?) = s == t
fun isEqualSameNullableA(s: A?, t: A?) = s == t
fun isEqualAnyNullableLeftA(s: A?, t: Any?) = s == t
fun isEqualAnyNullableRightA(s: Any?, t: A?) = s == t
// unbox, equals-impl0
fun isEqualLeftNullableRightUnboxedA(s: A?, t: A) = s == t
// equals-impl
fun isEqualRightNullableLeftUnboxedA(s: A, t: A?) = s == t
// FILE: b.kt
@@ -42,6 +46,9 @@ fun isEqualSameNullableB(s: B?, t: B?) = s == t
fun isEqualAnyNullableLeftB(s: B?, t: Any?) = s == t
// boxes
// fun isEqualAnyNullableRightB(s: Any?, t: B?) = s == t
// equals-impl0
fun isEqualLeftNullableRightUnboxedB(s: B?, t: B) = s == t
fun isEqualRightNullableLeftUnboxedB(s: B, t: B?) = s == t
// FILE: c.kt
@@ -61,24 +68,28 @@ fun isEqualAnyLeftC(s: C, t: Any?) = s == t
fun isEqualSameNullableC(s: C?, t: C?) = s == t
fun isEqualAnyNullableLeftC(s: C?, t: Any?) = s == t
fun isEqualAnyNullableRightC(s: Any?, t: C?) = s == t
// unbox, equals-impl0
fun isEqualLeftNullableRightUnboxedC(s: C?, t: C) = s == t
// equals-impl
fun isEqualRightNullableLeftUnboxedC(s: C, t: C?) = s == t
// @AKt.class:
// 0 INVOKESTATIC A.box-impl
// 0 INVOKEVIRTUAL A.unbox-impl
// 1 INVOKESTATIC A.equals-impl \(
// 1 INVOKESTATIC A.equals-impl0
// 1 INVOKEVIRTUAL A.unbox-impl
// 2 INVOKESTATIC A.equals-impl \(
// 2 INVOKESTATIC A.equals-impl0
// 3 INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual
// @BKt.class:
// 0 INVOKESTATIC B.box-impl
// 0 INVOKEVIRTUAL B.unbox-impl
// 2 INVOKESTATIC B.equals-impl \(
// 2 INVOKESTATIC B.equals-impl0
// 4 INVOKESTATIC B.equals-impl0
// 0 INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual
// @CKt.class:
// 0 INVOKESTATIC C.box-impl
// 0 INVOKEVIRTUAL C.unbox-impl
// 1 INVOKESTATIC C.equals-impl \(
// 1 INVOKESTATIC C.equals-impl0
// 1 INVOKEVIRTUAL C.unbox-impl
// 2 INVOKESTATIC C.equals-impl \(
// 2 INVOKESTATIC C.equals-impl0
// 3 INVOKESTATIC kotlin/jvm/internal/Intrinsics.areEqual