Add more tests for inline class equality
This commit is contained in:
committed by
Alexander Udalov
parent
cdc5e1347b
commit
b85b2d9af8
+50
@@ -0,0 +1,50 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class Inner(val w: String)
|
||||
inline class A(val x: Inner)
|
||||
|
||||
fun isNullVacuousLeft(s: A) = s == null
|
||||
fun isNullVacuousRight(s: A) = null == s
|
||||
fun isNullLeft(s: A?) = s == null
|
||||
fun isNullRight(s: A?) = null == s
|
||||
fun isEqualSame(s: A, t: A) = s == t
|
||||
fun isEqualAnyLeft(s: A, t: Any?) = s == t
|
||||
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 box(): String {
|
||||
if (isNullVacuousLeft(A(Inner("")))) return "Fail 1"
|
||||
if (isNullVacuousRight(A(Inner("")))) return "Fail 2"
|
||||
if (isNullLeft(A(Inner("")))) return "Fail 3"
|
||||
if (isNullRight(A(Inner("")))) return "Fail 4"
|
||||
if (!isNullLeft(null)) return "Fail 5"
|
||||
if (!isNullRight(null)) return "Fail 6"
|
||||
if (!isEqualSame(A(Inner("")), A(Inner("")))) return "Fail 7"
|
||||
if (isEqualSame(A(Inner("")), A(Inner("a")))) return "Fail 8"
|
||||
if (isEqualAnyLeft(A(Inner("")), Inner(""))) return "Fail 9"
|
||||
if (isEqualAnyLeft(A(Inner("")), null)) return "Fail 10"
|
||||
if (!isEqualAnyLeft(A(Inner("")), A(Inner("")))) return "Fail 11"
|
||||
if (isEqualAnyRight(Inner(""), A(Inner("")))) return "Fail 12"
|
||||
if (isEqualAnyRight(null, A(Inner("")))) return "Fail 13"
|
||||
if (!isEqualAnyRight(A(Inner("")), A(Inner("")))) return "Fail 14"
|
||||
if (!isEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (!isEqualSameNullable(A(Inner("")), A(Inner("")))) return "Fail 16"
|
||||
if (isEqualSameNullable(null, A(Inner("")))) return "Fail 17"
|
||||
if (isEqualSameNullable(A(Inner("")), null)) return "Fail 18"
|
||||
if (isEqualSameNullable(A(Inner("")), A(Inner("a")))) return "Fail 19"
|
||||
if (!isEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (!isEqualAnyNullableLeft(A(Inner("")), A(Inner("")))) return "Fail 21"
|
||||
if (isEqualAnyNullableLeft(A(Inner("")), "")) return "Fail 22"
|
||||
if (isEqualAnyNullableLeft(null, Inner(""))) return "Fail 23"
|
||||
if (isEqualAnyNullableLeft(A(Inner("")), null)) return "Fail 24"
|
||||
if (isEqualAnyNullableLeft(A(Inner("")), A(Inner("a")))) return "Fail 25"
|
||||
if (!isEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (!isEqualAnyNullableRight(A(Inner("a")), A(Inner("a")))) return "Fail 27"
|
||||
if (isEqualAnyNullableRight(Inner(""), A(Inner("")))) return "Fail 28"
|
||||
if (isEqualAnyNullableRight(Inner(""), null)) return "Fail 29"
|
||||
if (isEqualAnyNullableRight(null, A(Inner("")))) return "Fail 30"
|
||||
if (isEqualAnyNullableRight(A(Inner("a")), A(Inner("b")))) return "Fail 31"
|
||||
return "OK"
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val a: String)
|
||||
|
||||
fun isEqualNA(x: A?, y: A) = x == y
|
||||
fun isEqualAN(x: A, y: A?) = x == y
|
||||
|
||||
fun box(): String {
|
||||
if (isEqualNA(null, A(""))) return "Fail 1"
|
||||
if (isEqualAN(A(""), null)) return "Fail 2"
|
||||
if (!isEqualNA(A(""), A(""))) return "Fail 3"
|
||||
if (!isEqualAN(A(""), A(""))) return "Fail 4"
|
||||
return "OK"
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class Inner(val w: String)
|
||||
inline class A(val x: Inner)
|
||||
|
||||
fun isNotNullVacuousLeft(s: A) = s != null
|
||||
fun isNotNullVacuousRight(s: A) = null != s
|
||||
fun isNotNullLeft(s: A?) = s != null
|
||||
fun isNotNullRight(s: A?) = null != s
|
||||
fun isNotEqualSame(s: A, t: A) = s != t
|
||||
fun isNotEqualAnyLeft(s: A, t: Any?) = s != t
|
||||
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 box(): String {
|
||||
if (!isNotNullVacuousLeft(A(Inner("")))) return "Fail 1"
|
||||
if (!isNotNullVacuousRight(A(Inner("")))) return "Fail 2"
|
||||
if (!isNotNullLeft(A(Inner("")))) return "Fail 3"
|
||||
if (!isNotNullRight(A(Inner("")))) return "Fail 4"
|
||||
if (isNotNullLeft(null)) return "Fail 5"
|
||||
if (isNotNullRight(null)) return "Fail 6"
|
||||
if (isNotEqualSame(A(Inner("")), A(Inner("")))) return "Fail 7"
|
||||
if (!isNotEqualSame(A(Inner("")), A(Inner("a")))) return "Fail 8"
|
||||
if (!isNotEqualAnyLeft(A(Inner("")), Inner(""))) return "Fail 9"
|
||||
if (!isNotEqualAnyLeft(A(Inner("")), null)) return "Fail 10"
|
||||
if (isNotEqualAnyLeft(A(Inner("")), A(Inner("")))) return "Fail 11"
|
||||
if (!isNotEqualAnyRight(Inner(""), A(Inner("")))) return "Fail 12"
|
||||
if (!isNotEqualAnyRight(null, A(Inner("")))) return "Fail 13"
|
||||
if (isNotEqualAnyRight(A(Inner("")), A(Inner("")))) return "Fail 14"
|
||||
if (isNotEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (isNotEqualSameNullable(A(Inner("")), A(Inner("")))) return "Fail 16"
|
||||
if (!isNotEqualSameNullable(null, A(Inner("")))) return "Fail 17"
|
||||
if (!isNotEqualSameNullable(A(Inner("")), null)) return "Fail 18"
|
||||
if (!isNotEqualSameNullable(A(Inner("")), A(Inner("a")))) return "Fail 19"
|
||||
if (isNotEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (isNotEqualAnyNullableLeft(A(Inner("")), A(Inner("")))) return "Fail 21"
|
||||
if (!isNotEqualAnyNullableLeft(A(Inner("")), "")) return "Fail 22"
|
||||
if (!isNotEqualAnyNullableLeft(null, Inner(""))) return "Fail 23"
|
||||
if (!isNotEqualAnyNullableLeft(A(Inner("")), null)) return "Fail 24"
|
||||
if (!isNotEqualAnyNullableLeft(A(Inner("")), A(Inner("a")))) return "Fail 25"
|
||||
if (isNotEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (isNotEqualAnyNullableRight(A(Inner("a")), A(Inner("a")))) return "Fail 27"
|
||||
if (!isNotEqualAnyNullableRight(Inner(""), A(Inner("")))) return "Fail 28"
|
||||
if (!isNotEqualAnyNullableRight(Inner(""), null)) return "Fail 29"
|
||||
if (!isNotEqualAnyNullableRight(null, A(Inner("")))) return "Fail 30"
|
||||
if (!isNotEqualAnyNullableRight(A(Inner("a")), A(Inner("b")))) return "Fail 31"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: String)
|
||||
|
||||
fun isNotNullVacuousLeft(s: A) = s != null
|
||||
fun isNotNullVacuousRight(s: A) = null != s
|
||||
fun isNotNullLeft(s: A?) = s != null
|
||||
fun isNotNullRight(s: A?) = null != s
|
||||
fun isNotEqualSame(s: A, t: A) = s != t
|
||||
fun isNotEqualAnyLeft(s: A, t: Any?) = s != t
|
||||
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 box(): String {
|
||||
if (!isNotNullVacuousLeft(A(""))) return "Fail 1"
|
||||
if (!isNotNullVacuousRight(A(""))) return "Fail 2"
|
||||
if (!isNotNullLeft(A(""))) return "Fail 3"
|
||||
if (!isNotNullRight(A(""))) return "Fail 4"
|
||||
if (isNotNullLeft(null)) return "Fail 5"
|
||||
if (isNotNullRight(null)) return "Fail 6"
|
||||
if (isNotEqualSame(A(""), A(""))) return "Fail 7"
|
||||
if (!isNotEqualSame(A("a"), A("b"))) return "Fail 8"
|
||||
if (!isNotEqualAnyLeft(A(""), "")) return "Fail 9"
|
||||
if (!isNotEqualAnyLeft(A(""), null)) return "Fail 10"
|
||||
if (isNotEqualAnyLeft(A(""), A(""))) return "Fail 11"
|
||||
if (!isNotEqualAnyRight("", A(""))) return "Fail 12"
|
||||
if (!isNotEqualAnyRight(null, A(""))) return "Fail 13"
|
||||
if (isNotEqualAnyRight(A(""), A(""))) return "Fail 14"
|
||||
if (isNotEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (isNotEqualSameNullable(A(""), A(""))) return "Fail 16"
|
||||
if (!isNotEqualSameNullable(null, A(""))) return "Fail 17"
|
||||
if (!isNotEqualSameNullable(A(""), null)) return "Fail 18"
|
||||
if (!isNotEqualSameNullable(A(""), A("a"))) return "Fail 19"
|
||||
if (isNotEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (isNotEqualAnyNullableLeft(A(""), A(""))) return "Fail 21"
|
||||
if (!isNotEqualAnyNullableLeft(A(""), "")) return "Fail 22"
|
||||
if (!isNotEqualAnyNullableLeft(null, "")) return "Fail 23"
|
||||
if (!isNotEqualAnyNullableLeft(A(""), null)) return "Fail 24"
|
||||
if (!isNotEqualAnyNullableLeft(A(""), A("a"))) return "Fail 25"
|
||||
if (isNotEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (isNotEqualAnyNullableRight(A(""), A(""))) return "Fail 27"
|
||||
if (!isNotEqualAnyNullableRight("", A(""))) return "Fail 28"
|
||||
if (!isNotEqualAnyNullableRight("", null)) return "Fail 29"
|
||||
if (!isNotEqualAnyNullableRight(null, A(""))) return "Fail 30"
|
||||
if (!isNotEqualAnyNullableRight(A(""), A("a"))) return "Fail 31"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: Any?)
|
||||
|
||||
fun isNotNullVacuousLeft(s: A) = s != null
|
||||
fun isNotNullVacuousRight(s: A) = null != s
|
||||
fun isNotNullLeft(s: A?) = s != null
|
||||
fun isNotNullRight(s: A?) = null != s
|
||||
fun isNotEqualSame(s: A, t: A) = s != t
|
||||
fun isNotEqualAnyLeft(s: A, t: Any?) = s != t
|
||||
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 box(): String {
|
||||
if (!isNotNullVacuousLeft(A(0))) return "Fail 1"
|
||||
if (!isNotNullVacuousRight(A(0))) return "Fail 2"
|
||||
if (!isNotNullLeft(A(0))) return "Fail 3"
|
||||
if (!isNotNullRight(A(0))) return "Fail 4"
|
||||
if (isNotNullLeft(null)) return "Fail 5"
|
||||
if (isNotNullRight(null)) return "Fail 6"
|
||||
if (isNotEqualSame(A(0), A(0))) return "Fail 7"
|
||||
if (!isNotEqualSame(A(0), A(1))) return "Fail 8"
|
||||
if (!isNotEqualAnyLeft(A(0), 0)) return "Fail 9"
|
||||
if (!isNotEqualAnyLeft(A(0), null)) return "Fail 10"
|
||||
if (isNotEqualAnyLeft(A(0), A(0))) return "Fail 11"
|
||||
if (!isNotEqualAnyRight(0, A(0))) return "Fail 12"
|
||||
if (!isNotEqualAnyRight(null, A(0))) return "Fail 13"
|
||||
if (isNotEqualAnyRight(A(0), A(0))) return "Fail 14"
|
||||
if (isNotEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (isNotEqualSameNullable(A(0), A(0))) return "Fail 16"
|
||||
if (!isNotEqualSameNullable(null, A(0))) return "Fail 17"
|
||||
if (!isNotEqualSameNullable(A(0), null)) return "Fail 18"
|
||||
if (!isNotEqualSameNullable(A(0), A(1))) return "Fail 19"
|
||||
if (isNotEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (isNotEqualAnyNullableLeft(A(0), A(0))) return "Fail 21"
|
||||
if (!isNotEqualAnyNullableLeft(A(0), 0)) return "Fail 22"
|
||||
if (!isNotEqualAnyNullableLeft(null, 0)) return "Fail 23"
|
||||
if (!isNotEqualAnyNullableLeft(A(0), null)) return "Fail 24"
|
||||
if (!isNotEqualAnyNullableLeft(A(0), A(1))) return "Fail 25"
|
||||
if (isNotEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (isNotEqualAnyNullableRight(A(0), A(0))) return "Fail 27"
|
||||
if (!isNotEqualAnyNullableRight(0, A(0))) return "Fail 28"
|
||||
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 (!isNotNullVacuousLeft(A(null))) return "Fail 32"
|
||||
if (!isNotNullVacuousRight(A(null))) return "Fail 33"
|
||||
if (!isNotNullLeft(A(null))) return "Fail 34"
|
||||
if (!isNotNullRight(A(null))) return "Fail 35"
|
||||
if (!isNotEqualAnyLeft(A(null), null)) return "Fail 36"
|
||||
if (!isNotEqualAnyRight(null, A(null))) return "Fail 37"
|
||||
if (!isNotEqualAnyNullableLeft(A(null), null)) return "Fail 38"
|
||||
if (!isNotEqualAnyNullableRight(null, A(null))) return "Fail 39"
|
||||
if (!isNotEqualSameNullable(A(null), null)) return "Fail 42"
|
||||
if (!isNotEqualSameNullable(null, A(null))) return "Fail 43"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: Int)
|
||||
|
||||
fun isNotNullVacuousLeft(s: A) = s != null
|
||||
fun isNotNullVacuousRight(s: A) = null != s
|
||||
fun isNotNullLeft(s: A?) = s != null
|
||||
fun isNotNullRight(s: A?) = null != s
|
||||
fun isNotEqualSame(s: A, t: A) = s != t
|
||||
fun isNotEqualAnyLeft(s: A, t: Any?) = s != t
|
||||
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 box(): String {
|
||||
if (!isNotNullVacuousLeft(A(0))) return "Fail 1"
|
||||
if (!isNotNullVacuousRight(A(0))) return "Fail 2"
|
||||
if (!isNotNullLeft(A(0))) return "Fail 3"
|
||||
if (!isNotNullRight(A(0))) return "Fail 4"
|
||||
if (isNotNullLeft(null)) return "Fail 5"
|
||||
if (isNotNullRight(null)) return "Fail 6"
|
||||
if (isNotEqualSame(A(0), A(0))) return "Fail 7"
|
||||
if (!isNotEqualSame(A(0), A(1))) return "Fail 8"
|
||||
if (!isNotEqualAnyLeft(A(0), 0)) return "Fail 9"
|
||||
if (!isNotEqualAnyLeft(A(0), null)) return "Fail 10"
|
||||
if (isNotEqualAnyLeft(A(0), A(0))) return "Fail 11"
|
||||
if (!isNotEqualAnyRight(0, A(0))) return "Fail 12"
|
||||
if (!isNotEqualAnyRight(null, A(0))) return "Fail 13"
|
||||
if (isNotEqualAnyRight(A(0), A(0))) return "Fail 14"
|
||||
if (isNotEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (isNotEqualSameNullable(A(0), A(0))) return "Fail 16"
|
||||
if (!isNotEqualSameNullable(null, A(0))) return "Fail 17"
|
||||
if (!isNotEqualSameNullable(A(0), null)) return "Fail 18"
|
||||
if (!isNotEqualSameNullable(A(0), A(1))) return "Fail 19"
|
||||
if (isNotEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (isNotEqualAnyNullableLeft(A(0), A(0))) return "Fail 21"
|
||||
if (!isNotEqualAnyNullableLeft(A(0), 0)) return "Fail 22"
|
||||
if (!isNotEqualAnyNullableLeft(null, 0)) return "Fail 23"
|
||||
if (!isNotEqualAnyNullableLeft(A(0), null)) return "Fail 24"
|
||||
if (!isNotEqualAnyNullableLeft(A(0), A(1))) return "Fail 25"
|
||||
if (isNotEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (isNotEqualAnyNullableRight(A(0), A(0))) return "Fail 27"
|
||||
if (!isNotEqualAnyNullableRight(0, A(0))) return "Fail 28"
|
||||
if (!isNotEqualAnyNullableRight(0, null)) return "Fail 29"
|
||||
if (!isNotEqualAnyNullableRight(null, A(0))) return "Fail 30"
|
||||
if (!isNotEqualAnyNullableRight(A(0), A(1))) return "Fail 31"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: String)
|
||||
|
||||
fun isNullVacuousLeft(s: A) = s == null
|
||||
fun isNullVacuousRight(s: A) = null == s
|
||||
fun isNullLeft(s: A?) = s == null
|
||||
fun isNullRight(s: A?) = null == s
|
||||
fun isEqualSame(s: A, t: A) = s == t
|
||||
fun isEqualAnyLeft(s: A, t: Any?) = s == t
|
||||
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 box(): String {
|
||||
if (isNullVacuousLeft(A(""))) return "Fail 1"
|
||||
if (isNullVacuousRight(A(""))) return "Fail 2"
|
||||
if (isNullLeft(A(""))) return "Fail 3"
|
||||
if (isNullRight(A(""))) return "Fail 4"
|
||||
if (!isNullLeft(null)) return "Fail 5"
|
||||
if (!isNullRight(null)) return "Fail 6"
|
||||
if (!isEqualSame(A(""), A(""))) return "Fail 7"
|
||||
if (isEqualSame(A("a"), A("b"))) return "Fail 8"
|
||||
if (isEqualAnyLeft(A(""), "")) return "Fail 9"
|
||||
if (isEqualAnyLeft(A(""), null)) return "Fail 10"
|
||||
if (!isEqualAnyLeft(A(""), A(""))) return "Fail 11"
|
||||
if (isEqualAnyRight("", A(""))) return "Fail 12"
|
||||
if (isEqualAnyRight(null, A(""))) return "Fail 13"
|
||||
if (!isEqualAnyRight(A(""), A(""))) return "Fail 14"
|
||||
if (!isEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (!isEqualSameNullable(A(""), A(""))) return "Fail 16"
|
||||
if (isEqualSameNullable(null, A(""))) return "Fail 17"
|
||||
if (isEqualSameNullable(A(""), null)) return "Fail 18"
|
||||
if (isEqualSameNullable(A(""), A("a"))) return "Fail 19"
|
||||
if (!isEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (!isEqualAnyNullableLeft(A(""), A(""))) return "Fail 21"
|
||||
if (isEqualAnyNullableLeft(A(""), "")) return "Fail 22"
|
||||
if (isEqualAnyNullableLeft(null, "")) return "Fail 23"
|
||||
if (isEqualAnyNullableLeft(A(""), null)) return "Fail 24"
|
||||
if (isEqualAnyNullableLeft(A(""), A("a"))) return "Fail 25"
|
||||
if (!isEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (!isEqualAnyNullableRight(A(""), A(""))) return "Fail 27"
|
||||
if (isEqualAnyNullableRight("", A(""))) return "Fail 28"
|
||||
if (isEqualAnyNullableRight("", null)) return "Fail 29"
|
||||
if (isEqualAnyNullableRight(null, A(""))) return "Fail 30"
|
||||
if (isEqualAnyNullableRight(A(""), A("a"))) return "Fail 31"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: Any?)
|
||||
|
||||
fun isNullVacuousLeft(s: A) = s == null
|
||||
fun isNullVacuousRight(s: A) = null == s
|
||||
fun isNullLeft(s: A?) = s == null
|
||||
fun isNullRight(s: A?) = null == s
|
||||
fun isEqualSame(s: A, t: A) = s == t
|
||||
fun isEqualAnyLeft(s: A, t: Any?) = s == t
|
||||
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 box(): String {
|
||||
if (isNullVacuousLeft(A(0))) return "Fail 1"
|
||||
if (isNullVacuousRight(A(0))) return "Fail 2"
|
||||
if (isNullLeft(A(0))) return "Fail 3"
|
||||
if (isNullRight(A(0))) return "Fail 4"
|
||||
if (!isNullLeft(null)) return "Fail 5"
|
||||
if (!isNullRight(null)) return "Fail 6"
|
||||
if (!isEqualSame(A(0), A(0))) return "Fail 7"
|
||||
if (isEqualSame(A(0), A(1))) return "Fail 8"
|
||||
if (isEqualAnyLeft(A(0), 0)) return "Fail 9"
|
||||
if (isEqualAnyLeft(A(0), null)) return "Fail 10"
|
||||
if (!isEqualAnyLeft(A(0), A(0))) return "Fail 11"
|
||||
if (isEqualAnyRight(0, A(0))) return "Fail 12"
|
||||
if (isEqualAnyRight(null, A(0))) return "Fail 13"
|
||||
if (!isEqualAnyRight(A(0), A(0))) return "Fail 14"
|
||||
if (!isEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (!isEqualSameNullable(A(0), A(0))) return "Fail 16"
|
||||
if (isEqualSameNullable(null, A(0))) return "Fail 17"
|
||||
if (isEqualSameNullable(A(0), null)) return "Fail 18"
|
||||
if (isEqualSameNullable(A(0), A(1))) return "Fail 19"
|
||||
if (!isEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (!isEqualAnyNullableLeft(A(0), A(0))) return "Fail 21"
|
||||
if (isEqualAnyNullableLeft(A(0), 0)) return "Fail 22"
|
||||
if (isEqualAnyNullableLeft(null, 0)) return "Fail 23"
|
||||
if (isEqualAnyNullableLeft(A(0), null)) return "Fail 24"
|
||||
if (isEqualAnyNullableLeft(A(0), A(1))) return "Fail 25"
|
||||
if (!isEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (!isEqualAnyNullableRight(A(0), A(0))) return "Fail 27"
|
||||
if (isEqualAnyNullableRight(0, A(0))) return "Fail 28"
|
||||
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 (isNullVacuousLeft(A(null))) return "Fail 32"
|
||||
if (isNullVacuousRight(A(null))) return "Fail 33"
|
||||
if (isNullLeft(A(null))) return "Fail 34"
|
||||
if (isNullRight(A(null))) return "Fail 35"
|
||||
if (isEqualAnyLeft(A(null), null)) return "Fail 36"
|
||||
if (isEqualAnyRight(null, A(null))) return "Fail 37"
|
||||
if (isEqualAnyNullableLeft(A(null), null)) return "Fail 38"
|
||||
if (isEqualAnyNullableRight(null, A(null))) return "Fail 39"
|
||||
if (isEqualSameNullable(A(null), null)) return "Fail 42"
|
||||
if (isEqualSameNullable(null, A(null))) return "Fail 43"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: Int)
|
||||
|
||||
fun isNullVacuousLeft(s: A) = s == null
|
||||
fun isNullVacuousRight(s: A) = null == s
|
||||
fun isNullLeft(s: A?) = s == null
|
||||
fun isNullRight(s: A?) = null == s
|
||||
fun isEqualSame(s: A, t: A) = s == t
|
||||
fun isEqualAnyLeft(s: A, t: Any?) = s == t
|
||||
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 box(): String {
|
||||
if (isNullVacuousLeft(A(0))) return "Fail 1"
|
||||
if (isNullVacuousRight(A(0))) return "Fail 2"
|
||||
if (isNullLeft(A(0))) return "Fail 3"
|
||||
if (isNullRight(A(0))) return "Fail 4"
|
||||
if (!isNullLeft(null)) return "Fail 5"
|
||||
if (!isNullRight(null)) return "Fail 6"
|
||||
if (!isEqualSame(A(0), A(0))) return "Fail 7"
|
||||
if (isEqualSame(A(0), A(1))) return "Fail 8"
|
||||
if (isEqualAnyLeft(A(0), 0)) return "Fail 9"
|
||||
if (isEqualAnyLeft(A(0), null)) return "Fail 10"
|
||||
if (!isEqualAnyLeft(A(0), A(0))) return "Fail 11"
|
||||
if (isEqualAnyRight(0, A(0))) return "Fail 12"
|
||||
if (isEqualAnyRight(null, A(0))) return "Fail 13"
|
||||
if (!isEqualAnyRight(A(0), A(0))) return "Fail 14"
|
||||
if (!isEqualSameNullable(null, null)) return "Fail 15"
|
||||
if (!isEqualSameNullable(A(0), A(0))) return "Fail 16"
|
||||
if (isEqualSameNullable(null, A(0))) return "Fail 17"
|
||||
if (isEqualSameNullable(A(0), null)) return "Fail 18"
|
||||
if (isEqualSameNullable(A(0), A(1))) return "Fail 19"
|
||||
if (!isEqualAnyNullableLeft(null, null)) return "Fail 20"
|
||||
if (!isEqualAnyNullableLeft(A(0), A(0))) return "Fail 21"
|
||||
if (isEqualAnyNullableLeft(A(0), 0)) return "Fail 22"
|
||||
if (isEqualAnyNullableLeft(null, 0)) return "Fail 23"
|
||||
if (isEqualAnyNullableLeft(A(0), null)) return "Fail 24"
|
||||
if (isEqualAnyNullableLeft(A(0), A(1))) return "Fail 25"
|
||||
if (!isEqualAnyNullableRight(null, null)) return "Fail 26"
|
||||
if (!isEqualAnyNullableRight(A(0), A(0))) return "Fail 27"
|
||||
if (isEqualAnyNullableRight(0, A(0))) return "Fail 28"
|
||||
if (isEqualAnyNullableRight(0, null)) return "Fail 29"
|
||||
if (isEqualAnyNullableRight(null, A(0))) return "Fail 30"
|
||||
if (isEqualAnyNullableRight(A(0), A(1))) return "Fail 31"
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: String)
|
||||
|
||||
class B {
|
||||
override fun equals(other: Any?) = true
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val x: Any? = B()
|
||||
val y: A = A("")
|
||||
if (x != y) return "Fail"
|
||||
return "OK"
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class Inner(val x: Int)
|
||||
inline class A(val x: Inner)
|
||||
|
||||
var i = 0
|
||||
|
||||
fun set1(): A {
|
||||
i = 1
|
||||
return A(Inner(0))
|
||||
}
|
||||
|
||||
fun test1(n: Int): A {
|
||||
if (i != 1)
|
||||
throw IllegalStateException("Fail $n")
|
||||
i = 0
|
||||
return A(Inner(0))
|
||||
}
|
||||
|
||||
fun set1Boxed(): Any? = set1()
|
||||
fun test1Boxed(n: Int): Any? = test1(n)
|
||||
|
||||
fun box(): String {
|
||||
try {
|
||||
set1() == test1(1)
|
||||
set1Boxed() == test1(2)
|
||||
set1() == test1Boxed(3)
|
||||
set1Boxed() == test1Boxed(4)
|
||||
} catch (e: IllegalStateException) {
|
||||
return e.message ?: "Fail no message"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: String = "")
|
||||
|
||||
var i = 0
|
||||
|
||||
fun set1(): A {
|
||||
i = 1
|
||||
return A()
|
||||
}
|
||||
|
||||
fun test1(n: Int): A {
|
||||
if (i != 1)
|
||||
throw IllegalStateException("Fail $n")
|
||||
i = 0
|
||||
return A()
|
||||
}
|
||||
|
||||
fun set1Boxed(): Any? = set1()
|
||||
fun test1Boxed(n: Int): Any? = test1(n)
|
||||
|
||||
fun box(): String {
|
||||
try {
|
||||
set1() == test1(1)
|
||||
set1Boxed() == test1(2)
|
||||
set1() == test1Boxed(3)
|
||||
set1Boxed() == test1Boxed(4)
|
||||
} catch (e: IllegalStateException) {
|
||||
return e.message ?: "Fail no message"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: Any? = null)
|
||||
|
||||
var i = 0
|
||||
|
||||
fun set1(): A {
|
||||
i = 1
|
||||
return A()
|
||||
}
|
||||
|
||||
fun test1(n: Int): A {
|
||||
if (i != 1)
|
||||
throw IllegalStateException("Fail $n")
|
||||
i = 0
|
||||
return A()
|
||||
}
|
||||
|
||||
fun set1Boxed(): Any? = set1()
|
||||
fun test1Boxed(n: Int): Any? = test1(n)
|
||||
|
||||
fun box(): String {
|
||||
try {
|
||||
set1() == test1(1)
|
||||
set1Boxed() == test1(2)
|
||||
set1() == test1Boxed(3)
|
||||
set1Boxed() == test1Boxed(4)
|
||||
} catch (e: IllegalStateException) {
|
||||
return e.message ?: "Fail no message"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class A(val x: Int = 0)
|
||||
|
||||
var i = 0
|
||||
|
||||
fun set1(): A {
|
||||
i = 1
|
||||
return A()
|
||||
}
|
||||
|
||||
fun test1(n: Int): A {
|
||||
if (i != 1)
|
||||
throw IllegalStateException("Fail $n")
|
||||
i = 0
|
||||
return A()
|
||||
}
|
||||
|
||||
fun set1Boxed(): Any? = set1()
|
||||
fun test1Boxed(n: Int): Any? = test1(n)
|
||||
|
||||
fun box(): String {
|
||||
try {
|
||||
set1() == test1(1)
|
||||
set1Boxed() == test1(2)
|
||||
set1() == test1Boxed(3)
|
||||
set1Boxed() == test1Boxed(4)
|
||||
} catch (e: IllegalStateException) {
|
||||
return e.message ?: "Fail no message"
|
||||
}
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user