[JS IR BE] Update test data

This commit is contained in:
Roman Artemev
2018-06-06 16:21:21 +03:00
committed by Roman Artemev
parent 17d71f1e46
commit 6ac4fd2e5f
160 changed files with 1239 additions and 172 deletions
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1108
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1108
// http://youtrack.jetbrains.com/issue/KT-5594
// JS: compiler crashes
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1108
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1111
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1115
// http://youtrack.jetbrains.com/issue/KT-5320
// KT-5320 Invalid JS code generated for typecast inside ternary operator
@@ -0,0 +1,142 @@
// EXPECTED_REACHABLE_NODES: 1108
package foo
open class A
open class B : A() // B
open class C
open class D : B() // B
class E : D() // B
class F : C()
val dyn: dynamic = js("({})")
fun nullToNull(aa: Any?) = aa as? B?
fun notNullToNull(aa: Any) = aa as? B?
fun nullToNotNull(aa: Any?) = aa as? B
fun notNullToNotNull(aa: Any) = aa as? B
fun NBtoNB(bb: B?) = bb as? B?
fun dtoNB(dd: dynamic) = dd as? B?
val an = Any()
val a = A()
val b = B()
val c = C()
val d = D()
val e = E()
val f = F()
fun fff() {}
val func = ::fff
val bool = true
val num = 42
val str = "String"
fun testClassCastN2N(): String { // ? as? ?
assertEquals(null, nullToNull(null), "null as? B?")
assertEquals(null, nullToNull(a), "A? as? B?")
assertEquals(b, NBtoNB(b), "b? as? B?")
assertEquals(null, NBtoNB(null), "null() as? B?")
assertEquals(b, nullToNull(b), "B? as? B?")
assertEquals(null, nullToNull(c), "C? as? B?")
assertEquals(d, nullToNull(d), "D? as? B?")
assertEquals(e, nullToNull(e), "E? as? B?")
assertEquals(null, nullToNull(f), "F? as? B?")
assertEquals(null, nullToNull(an), "Any? as? B?")
assertEquals(null, dtoNB(null), "null dynamic as? B?")
assertEquals(null, nullToNull(func), "Function? is B?")
assertEquals(null, nullToNull(bool), "Boolean? is B?")
assertEquals(null, nullToNull(num), "Number? is B?")
assertEquals(null, nullToNull(str), "String? is B?")
return "OK"
}
fun NBtoB(bb: B?) = bb as? B
fun testClassCastNN2N(): String { // ! as? ?
assertEquals(null, notNullToNull(a), "A as? B?")
assertEquals(b, NBtoB(b), "b as? B?")
assertEquals(null, NBtoB(null), "null() as? B?")
assertEquals(b, notNullToNull(b), "B as? B?")
assertEquals(null, notNullToNull(c), "C as? B?")
assertEquals(d, notNullToNull(d), "D as? B?")
assertEquals(e, notNullToNull(e), "E as? B?")
assertEquals(null, notNullToNull(f), "F as? B?")
assertEquals(null, notNullToNull(an), "Any as? B?")
assertEquals(null, dtoNB(dyn), "dynamic as? B?")
assertEquals(null, notNullToNull(func), "Function is B?")
assertEquals(null, notNullToNull(bool), "Boolean is B?")
assertEquals(null, notNullToNull(num), "Number is B?")
assertEquals(null, notNullToNull(str), "String is B?")
return "OK"
}
fun BtoNB(bb: B) = bb as? B?
fun anyNToAnyNN(aa: Any?) = aa as? Any
fun dtoB(dd: dynamic) = dd as? B
fun testClassCastN2NN(): String { // ? as? !
assertEquals(null, nullToNotNull(null), "null as? B")
assertEquals(null, nullToNotNull(a), "A? as? B")
assertEquals(b, BtoNB(b), "b as? B?")
assertEquals(b, nullToNotNull(b), "B? as? B")
assertEquals(null, nullToNotNull(c), "C? as? B")
assertEquals(d, nullToNotNull(d), "D? as? B")
assertEquals(e, nullToNotNull(e), "E? as? B")
assertEquals(null, nullToNotNull(f), "F? as? B")
assertEquals(null, nullToNotNull(Any()), "Any? as? B")
assertEquals(null, dtoB(null), "null dynamic as? B")
assertEquals(an, anyNToAnyNN(an), "Any? as? Any")
assertEquals(null, anyNToAnyNN(null), "null any as? Any")
assertEquals(null, nullToNotNull(func), "Function? is B")
assertEquals(null, nullToNotNull(bool), "Boolean? is B")
assertEquals(null, nullToNotNull(num), "Number? is B")
assertEquals(null, nullToNotNull(str), "String? is B")
assertEquals(func, anyNToAnyNN(func), "Function? is Any")
assertEquals(bool, anyNToAnyNN(bool), "Boolean? is Any")
assertEquals(num, anyNToAnyNN(num), "Number? is Any")
assertEquals(str, anyNToAnyNN(str), "String? is Any")
return "OK"
}
fun testClassCastNN2NN(): String { // ! as? !
assertEquals(null, notNullToNotNull(a), "A as? B")
assertEquals(b, notNullToNotNull(b), "B as? B")
assertEquals(null, notNullToNotNull(c), "C as? B")
assertEquals(d, notNullToNotNull(d), "D as? B")
assertEquals(e, notNullToNotNull(e), "E as? B")
assertEquals(null, notNullToNotNull(f), "F as? B")
assertEquals(null, notNullToNotNull(an), "Any as? B")
assertEquals(null, dtoB(dyn), "dynamic as? B")
assertEquals(null, notNullToNotNull(func), "Function is II")
assertEquals(null, notNullToNotNull(bool), "Boolean is II")
assertEquals(null, notNullToNotNull(num), "Number is II")
assertEquals(null, notNullToNotNull(str), "String is II")
return "OK"
}
fun testClassCast() {
assertEquals("OK", testClassCastN2N())
assertEquals("OK", testClassCastN2NN())
assertEquals("OK", testClassCastNN2N())
assertEquals("OK", testClassCastNN2NN())
}
fun box(): String {
testClassCast()
return "OK"
}
@@ -0,0 +1,423 @@
// EXPECTED_REACHABLE_NODES: 1108
package foo
interface IA
interface IB : IA // B
interface IC : IA, IB // B, C
interface ID : IB // B
interface IE // E
interface IF : IB, IE // B, E
interface IG : ID // B
interface IH
interface II : IH // I
interface IJ : IF, II // B, E, I
interface IK : IC // B, C
interface IL: IK, IF, IJ // B, C, E, I
open class A //
open class AIA: A(), IA //
open class AIB: A(), IB // B
open class AIE: A(), IE // E
open class AIF: A(), IF // B, E
open class AIJ: A(), IJ // B, E, I
open class BAIA: AIA(), IC // B, C
open class BAIAIF: BAIA(), IF // B, C, E
open class BAIAIJ: BAIA(), IJ // B, C, E, I
open class C //
open class CIB: C(), IB // B
open class D: BAIAIF(), IG // B, C, E
open class E: A(), IF // B, E
open class F: AIB(), IK // B, C
open class G: E(), IL, IE // B, C, E, I
val an = Any()
val a = A()
val aia = AIA()
val aib = AIB()
val aie = AIE()
val aif = AIF()
val aij = AIJ()
val baia = BAIA()
val baiaif = BAIAIF()
val baiaij = BAIAIJ()
val c = C()
val cib = CIB()
val d = D()
val e = E()
val f = F()
val g = G()
var dyn = js("({})")
fun dToNB(dd: dynamic) = dd as? IB?
fun dToB(dd: dynamic) = dd as? IB
fun NBtoB(bb: IB?) = bb as? IB
fun BtoNB(bb: IB) = bb as? IB?
fun nullToNullB(aa: Any?) = aa as? IB?
fun notNullToNullB(aa: Any) = aa as? IB?
fun nullToNotNullB(aa: Any?) = aa as? IB
fun notNullToNotNullB(aa: Any) = aa as? IB
fun nullToNullC(aa: Any?) = aa as? IC?
fun notNullToNullC(aa: Any) = aa as? IC?
fun nullToNotNullC(aa: Any?) = aa as? IC
fun notNullToNotNullC(aa: Any) = aa as? IC
fun nullToNullE(aa: Any?) = aa as? IE?
fun notNullToNullE(aa: Any) = aa as? IE?
fun nullToNotNullE(aa: Any?) = aa as? IE
fun notNullToNotNullE(aa: Any) = aa as? IE
fun nullToNullI(aa: Any?) = aa as? II?
fun notNullToNullI(aa: Any) = aa as? II?
fun nullToNotNullI(aa: Any?) = aa as? II
fun notNullToNotNullI(aa: Any) = aa as? II
fun testInterfaceCastN2N(): String {
assertEquals(null, nullToNullB(null), "null as? IB?")
assertEquals(null, nullToNullB(a), "A? as? IB?")
assertEquals(null, nullToNullB(aia), "AIA? as? IB?")
assertEquals(aib, nullToNullB(aib), "AIB? as? IB?")
assertEquals(null, nullToNullB(aie), "AIE? as? IB?")
assertEquals(aif, nullToNullB(aif), "AIF? as? IB?")
assertEquals(aij, nullToNullB(aij), "AIJ? as? IB?")
assertEquals(baia, nullToNullB(baia), "BAIA? as? IB?")
assertEquals(baiaif, nullToNullB(baiaif), "BAIAIF? as? IB?")
assertEquals(baiaij, nullToNullB(baiaij), "BAIAIJ? as? IB?")
assertEquals(null, nullToNullB(c), "C? as? IB?")
assertEquals(cib, nullToNullB(cib), "CIB? as? IB?")
assertEquals(d, nullToNullB(d), "D? as? IB?")
assertEquals(e, nullToNullB(e), "E? as? IB?")
assertEquals(f, nullToNullB(f), "F? as? IB?")
assertEquals(g, nullToNullB(g), "G? as? IB?")
assertEquals(null, nullToNullB(an), "Any? as? IB?")
assertEquals(null, nullToNullC(null), "null as? IC?")
assertEquals(null, nullToNullC(a), "A? as? IC?")
assertEquals(null, nullToNullC(aia), "AIA? as? IC?")
assertEquals(null, nullToNullC(aib), "AIB? as? IC?")
assertEquals(null, nullToNullC(aie), "AIE? as? IC?")
assertEquals(null, nullToNullC(aif), "AIF? as? IC?")
assertEquals(null, nullToNullC(aij), "AIJ? as? IC?")
assertEquals(baia, nullToNullC(baia), "BAIA? as? IC?")
assertEquals(baiaif, nullToNullC(baiaif), "BAIAIF? as? IC?")
assertEquals(baiaij, nullToNullC(baiaij), "BAIAIJ? as? IC?")
assertEquals(null, nullToNullC(c), "C? as? IC?")
assertEquals(null, nullToNullC(cib), "CIB? as? IC?")
assertEquals(d, nullToNullC(d), "D? as? IC?")
assertEquals(null, nullToNullC(e), "E? as? IC?")
assertEquals(f, nullToNullC(f), "F? as? IC?")
assertEquals(g, nullToNullC(g), "G? as? IC?")
assertEquals(null, nullToNullC(an), "Any? as? IC?")
assertEquals(null, nullToNullE(null), "null as? IE?")
assertEquals(null, nullToNullE(a), "A? as? IE?")
assertEquals(null, nullToNullE(aia), "AIA? as? IE?")
assertEquals(null, nullToNullE(aib), "AIB? as? IE?")
assertEquals(aie, nullToNullE(aie), "AIE? as? IE?")
assertEquals(aif, nullToNullE(aif), "AIF? as? IE?")
assertEquals(aij, nullToNullE(aij), "AIJ? as? IE?")
assertEquals(null, nullToNullE(baia), "BAIA? as? IE?")
assertEquals(baiaif, nullToNullE(baiaif), "BAIAIF? as? IE?")
assertEquals(baiaij, nullToNullE(baiaij), "BAIAIJ? as? IE?")
assertEquals(null, nullToNullE(c), "C? as? IE?")
assertEquals(null, nullToNullE(cib), "CIB? as? IE?")
assertEquals(d, nullToNullE(d), "D? as? IE?")
assertEquals(e, nullToNullE(e), "E? as? IE?")
assertEquals(null, nullToNullE(f), "F? as? IE?")
assertEquals(g, nullToNullE(g), "G? as? IE?")
assertEquals(null, nullToNullE(an), "Any? as? IE?")
assertEquals(null, nullToNullI(null), "null as? II?")
assertEquals(null, nullToNullI(a), "A? as? II?")
assertEquals(null, nullToNullI(aia), "AIA? as? II?")
assertEquals(null, nullToNullI(aib), "AIB? as? II?")
assertEquals(null, nullToNullI(aie), "AIE? as? II?")
assertEquals(null, nullToNullI(aif), "AIF? as? II?")
assertEquals(aij, nullToNullI(aij), "AIJ? as? II?")
assertEquals(null, nullToNullI(baia), "BAIA? as? II?")
assertEquals(null, nullToNullI(baiaif), "BAIAIF? as? II?")
assertEquals(baiaij, nullToNullI(baiaij), "BAIAIJ? as? II?")
assertEquals(null, nullToNullI(c), "C? as? II?")
assertEquals(null, nullToNullI(cib), "CIB? as? II?")
assertEquals(null, nullToNullI(d), "D? as? II?")
assertEquals(null, nullToNullI(e), "E? as? II?")
assertEquals(null, nullToNullI(f), "F? as? II?")
assertEquals(g, nullToNullI(g), "G? as? II?")
assertEquals(null, nullToNullI(an), "Any? as? II?")
assertEquals(null, dToNB(null), "null dynamic as? IB?")
assertEquals(null, nullToNullI({}), "Function? as? II?")
assertEquals(null, nullToNullI(true), "Boolean? as? II?")
assertEquals(null, nullToNullI(42), "Number? as? II?")
assertEquals(null, nullToNullI("String"), "String? as? II?")
return "OK"
}
fun testInterfaceCastN2NN(): String {
assertEquals(null, nullToNotNullB(null), "null as? IB")
assertEquals(null, nullToNotNullB(a), "A? as? IB")
assertEquals(null, nullToNotNullB(aia), "AIA? as? IB")
assertEquals(aib, nullToNotNullB(aib), "AIB? as? IB")
assertEquals(null, nullToNotNullB(aie), "AIE? as? IB")
assertEquals(aif, nullToNotNullB(aif), "AIF? as? IB")
assertEquals(aij, nullToNotNullB(aij), "AIJ? as? IB")
assertEquals(baia, nullToNotNullB(baia), "BAIA? as? IB")
assertEquals(baiaif, nullToNotNullB(baiaif), "BAIAIF? as? IB")
assertEquals(baiaij, nullToNotNullB(baiaij), "BAIAIJ? as? IB")
assertEquals(null, nullToNotNullB(c), "C? as? IB")
assertEquals(cib, nullToNotNullB(cib), "CIB? as? IB")
assertEquals(d, nullToNotNullB(d), "D? as? IB")
assertEquals(e, nullToNotNullB(e), "E? as? IB")
assertEquals(f, nullToNotNullB(f), "F? as? IB")
assertEquals(g, nullToNotNullB(g), "G? as? IB")
assertEquals(null, nullToNotNullB(an), "Any? as? IB")
assertEquals(null, nullToNotNullC(null), "null as? IC")
assertEquals(null, nullToNotNullC(a), "A? as? IC")
assertEquals(null, nullToNotNullC(aia), "AIA? as? IC")
assertEquals(null, nullToNotNullC(aib), "AIB? as? IC")
assertEquals(null, nullToNotNullC(aie), "AIE? as? IC")
assertEquals(null, nullToNotNullC(aif), "AIF? as? IC")
assertEquals(null, nullToNotNullC(aij), "AIJ? as? IC")
assertEquals(baia, nullToNotNullC(baia), "BAIA? as? IC")
assertEquals(baiaif, nullToNotNullC(baiaif), "BAIAIF? as? IC")
assertEquals(baiaij, nullToNotNullC(baiaij), "BAIAIJ? as? IC")
assertEquals(null, nullToNotNullC(c), "C? as? IC")
assertEquals(null, nullToNotNullC(cib), "CIB? as? IC")
assertEquals(d, nullToNotNullC(d), "D? as? IC")
assertEquals(null, nullToNotNullC(e), "E? as? IC")
assertEquals(f, nullToNotNullC(f), "F? as? IC")
assertEquals(g, nullToNotNullC(g), "G? as? IC")
assertEquals(null, nullToNotNullC(an), "Any? as? IC")
assertEquals(null, nullToNotNullE(null), "null as? IE")
assertEquals(null, nullToNotNullE(a), "A? as? IE")
assertEquals(null, nullToNotNullE(aia), "AIA? as? IE")
assertEquals(null, nullToNotNullE(aib), "AIB? as? IE")
assertEquals(aie, nullToNotNullE(aie), "AIE? as? IE")
assertEquals(aif, nullToNotNullE(aif), "AIF? as? IE")
assertEquals(aij, nullToNotNullE(aij), "AIJ? as? IE")
assertEquals(null, nullToNotNullE(baia), "BAIA? as? IE")
assertEquals(baiaif, nullToNotNullE(baiaif), "BAIAIF? as? IE")
assertEquals(baiaij, nullToNotNullE(baiaij), "BAIAIJ? as? IE")
assertEquals(null, nullToNotNullE(c), "C? as? IE")
assertEquals(null, nullToNotNullE(cib), "CIB? as? IE")
assertEquals(d, nullToNotNullE(d), "D? as? IE")
assertEquals(e, nullToNotNullE(e), "E? as? IE")
assertEquals(null, nullToNotNullE(f), "F? as? IE")
assertEquals(g, nullToNotNullE(g), "G? as? IE")
assertEquals(null, nullToNotNullE(an), "Any? as? IE")
assertEquals(null, nullToNotNullI(null), "null as? II")
assertEquals(null, nullToNotNullI(a), "A? as? II")
assertEquals(null, nullToNotNullI(aia), "AIA? as? II")
assertEquals(null, nullToNotNullI(aib), "AIB? as? II")
assertEquals(null, nullToNotNullI(aie), "AIE? as? II")
assertEquals(null, nullToNotNullI(aif), "AIF? as? II")
assertEquals(aij, nullToNotNullI(aij), "AIJ? as? II")
assertEquals(null, nullToNotNullI(baia), "BAIA? as? II")
assertEquals(null, nullToNotNullI(baiaif), "BAIAIF? as? II")
assertEquals(baiaij, nullToNotNullI(baiaij), "BAIAIJ? as? II")
assertEquals(null, nullToNotNullI(c), "C? as? II")
assertEquals(null, nullToNotNullI(cib), "CIB? as? II")
assertEquals(null, nullToNotNullI(d), "D? as? II")
assertEquals(null, nullToNotNullI(e), "E? as? II")
assertEquals(null, nullToNotNullI(f), "F? as? II")
assertEquals(g, nullToNotNullI(g), "G? as? II")
assertEquals(null, nullToNotNullI(an), "Any? as? II")
assertEquals(null, dToB(null), "null dynamic as? IB")
assertEquals(aib, NBtoB(aib), "IB()? as? IB")
assertEquals(null, NBtoB(null), "null IB as? IB")
assertEquals(null, nullToNotNullI({}), "Function? as? II")
assertEquals(null, nullToNotNullI(true), "Boolean? as? II")
assertEquals(null, nullToNotNullI(42), "Number? as? II")
assertEquals(null, nullToNotNullI("String"), "String? as? II")
return "OK"
}
fun testInterfaceCastNN2N(): String {
assertEquals(null, notNullToNullB(a), "A as? IB?")
assertEquals(null, notNullToNullB(aia), "AIA as? IB?")
assertEquals(aib, notNullToNullB(aib), "AIB as? IB?")
assertEquals(null, notNullToNullB(aie), "AIE as? IB?")
assertEquals(aif, notNullToNullB(aif), "AIF as? IB?")
assertEquals(aij, notNullToNullB(aij), "AIJ as? IB?")
assertEquals(baia, notNullToNullB(baia), "BAIA as? IB?")
assertEquals(baiaif, notNullToNullB(baiaif), "BAIAIF as? IB?")
assertEquals(baiaij, notNullToNullB(baiaij), "BAIAIJ as? IB?")
assertEquals(null, notNullToNullB(c), "C as? IB?")
assertEquals(cib, notNullToNullB(cib), "CIB as? IB?")
assertEquals(d, notNullToNullB(d), "D as? IB?")
assertEquals(e, notNullToNullB(e), "E as? IB?")
assertEquals(f, notNullToNullB(f), "F as? IB?")
assertEquals(g, notNullToNullB(g), "G as? IB?")
assertEquals(null, notNullToNullB(an), "Any as? IB?")
assertEquals(null, notNullToNullC(a), "A as? IC?")
assertEquals(null, notNullToNullC(aia), "AIA as? IC?")
assertEquals(null, notNullToNullC(aib), "AIB as? IC?")
assertEquals(null, notNullToNullC(aie), "AIE as? IC?")
assertEquals(null, notNullToNullC(aif), "AIF as? IC?")
assertEquals(null, notNullToNullC(aij), "AIJ as? IC?")
assertEquals(baia, notNullToNullC(baia), "BAIA as? IC?")
assertEquals(baiaif, notNullToNullC(baiaif), "BAIAIF as? IC?")
assertEquals(baiaij, notNullToNullC(baiaij), "BAIAIJ as? IC?")
assertEquals(null, notNullToNullC(c), "C as? IC?")
assertEquals(null, notNullToNullC(cib), "CIB as? IC?")
assertEquals(d, notNullToNullC(d), "D as? IC?")
assertEquals(null, notNullToNullC(e), "E as? IC?")
assertEquals(f, notNullToNullC(f), "F as? IC?")
assertEquals(g, notNullToNullC(g), "G as? IC?")
assertEquals(null, notNullToNullC(an), "Any as? IC?")
assertEquals(null, notNullToNullE(a), "A as? IE?")
assertEquals(null, notNullToNullE(aia), "AIA as? IE?")
assertEquals(null, notNullToNullE(aib), "AIB as? IE?")
assertEquals(aie, notNullToNullE(aie), "AIE as? IE?")
assertEquals(aif, notNullToNullE(aif), "AIF as? IE?")
assertEquals(aij, notNullToNullE(aij), "AIJ as? IE?")
assertEquals(null, notNullToNullE(baia), "BAIA as? IE?")
assertEquals(baiaif, notNullToNullE(baiaif), "BAIAIF as? IE?")
assertEquals(baiaij, notNullToNullE(baiaij), "BAIAIJ as? IE?")
assertEquals(null, notNullToNullE(c), "C as? IE?")
assertEquals(null, notNullToNullE(cib), "CIB as? IE?")
assertEquals(d, notNullToNullE(d), "D as? IE?")
assertEquals(e, notNullToNullE(e), "E as? IE?")
assertEquals(null, notNullToNullE(f), "F as? IE?")
assertEquals(g, notNullToNullE(g), "G as? IE?")
assertEquals(null, notNullToNullE(an), "Any as? IE?")
assertEquals(null, notNullToNullI(a), "A as? II?")
assertEquals(null, notNullToNullI(aia), "AIA as? II?")
assertEquals(null, notNullToNullI(aib), "AIB as? II?")
assertEquals(null, notNullToNullI(aie), "AIE as? II?")
assertEquals(null, notNullToNullI(aif), "AIF as? II?")
assertEquals(aij, notNullToNullI(aij), "AIJ as? II?")
assertEquals(null, notNullToNullI(baia), "BAIA as? II?")
assertEquals(null, notNullToNullI(baiaif), "BAIAIF as? II?")
assertEquals(baiaij, notNullToNullI(baiaij), "BAIAIJ as? II?")
assertEquals(null, notNullToNullI(c), "C as? II?")
assertEquals(null, notNullToNullI(cib), "CIB as? II?")
assertEquals(null, notNullToNullI(d), "D as? II?")
assertEquals(null, notNullToNullI(e), "E as? II?")
assertEquals(null, notNullToNullI(f), "F as? II?")
assertEquals(g, notNullToNullI(g), "G as? II?")
assertEquals(null, notNullToNullI(an), "Any as? II?")
assertEquals(null, dToNB(dyn), "dynamic as? IB?")
assertEquals(baiaij, dToNB(baiaij), "BAIAIJ dynamic as? IB?")
assertEquals(aib, BtoNB(aib), "IB() as? IB?")
assertEquals(null, notNullToNullI({}), "Function as? II?")
assertEquals(null, notNullToNullI(true), "Boolean as? II?")
assertEquals(null, notNullToNullI(42), "Number as? II?")
assertEquals(null, notNullToNullI("String"), "String as? II?")
return "OK"
}
fun testInterfaceCastNN2NN(): String {
assertEquals(null, notNullToNotNullB(a), "A as? IB")
assertEquals(null, notNullToNotNullB(aia), "AIA as? IB")
assertEquals(aib, notNullToNotNullB(aib), "AIB as? IB")
assertEquals(null, notNullToNotNullB(aie), "AIE as? IB")
assertEquals(aif, notNullToNotNullB(aif), "AIF as? IB")
assertEquals(aij, notNullToNotNullB(aij), "AIJ as? IB")
assertEquals(baia, notNullToNotNullB(baia), "BAIA as? IB")
assertEquals(baiaif, notNullToNotNullB(baiaif), "BAIAIF as? IB")
assertEquals(baiaij, notNullToNotNullB(baiaij), "BAIAIJ as? IB")
assertEquals(null, notNullToNotNullB(c), "C as? IB")
assertEquals(cib, notNullToNotNullB(cib), "CIB as? IB")
assertEquals(d, notNullToNotNullB(d), "D as? IB")
assertEquals(e, notNullToNotNullB(e), "E as? IB")
assertEquals(f, notNullToNotNullB(f), "F as? IB")
assertEquals(g, notNullToNotNullB(g), "G as? IB")
assertEquals(null, notNullToNotNullB(an), "Any as? IB")
assertEquals(null, notNullToNotNullC(a), "A as? IC")
assertEquals(null, notNullToNotNullC(aia), "AIA as? IC")
assertEquals(null, notNullToNotNullC(aib), "AIB as? IC")
assertEquals(null, notNullToNotNullC(aie), "AIE as? IC")
assertEquals(null, notNullToNotNullC(aif), "AIF as? IC")
assertEquals(null, notNullToNotNullC(aij), "AIJ as? IC")
assertEquals(baia, notNullToNotNullC(baia), "BAIA as? IC")
assertEquals(baiaif, notNullToNotNullC(baiaif), "BAIAIF as? IC")
assertEquals(baiaij, notNullToNotNullC(baiaij), "BAIAIJ as? IC")
assertEquals(null, notNullToNotNullC(c), "C as? IC")
assertEquals(null, notNullToNotNullC(cib), "CIB as? IC")
assertEquals(d, notNullToNotNullC(d), "D as? IC")
assertEquals(null, notNullToNotNullC(e), "E as? IC")
assertEquals(f, notNullToNotNullC(f), "F as? IC")
assertEquals(g, notNullToNotNullC(g), "G as? IC")
assertEquals(null, notNullToNotNullC(an), "Any as? IC")
assertEquals(null, notNullToNotNullE(a), "A as? IE")
assertEquals(null, notNullToNotNullE(aia), "AIA as? IE")
assertEquals(null, notNullToNotNullE(aib), "AIB as? IE")
assertEquals(aie, notNullToNotNullE(aie), "AIE as? IE")
assertEquals(aif, notNullToNotNullE(aif), "AIF as? IE")
assertEquals(aij, notNullToNotNullE(aij), "AIJ as? IE")
assertEquals(null, notNullToNotNullE(baia), "BAIA as? IE")
assertEquals(baiaif, notNullToNotNullE(baiaif), "BAIAIF as? IE")
assertEquals(baiaij, notNullToNotNullE(baiaij), "BAIAIJ as? IE")
assertEquals(null, notNullToNotNullE(c), "C as? IE")
assertEquals(null, notNullToNotNullE(cib), "CIB as? IE")
assertEquals(d, notNullToNotNullE(d), "D as? IE")
assertEquals(e, notNullToNotNullE(e), "E as? IE")
assertEquals(null, notNullToNotNullE(f), "F as? IE")
assertEquals(g, notNullToNotNullE(g), "G as? IE")
assertEquals(null, notNullToNotNullE(an), "Any as? IE")
assertEquals(null, notNullToNotNullI(a), "A as? II")
assertEquals(null, notNullToNotNullI(aia), "AIA as? II")
assertEquals(null, notNullToNotNullI(aib), "AIB as? II")
assertEquals(null, notNullToNotNullI(aie), "AIE as? II")
assertEquals(null, notNullToNotNullI(aif), "AIF as? II")
assertEquals(aij, notNullToNotNullI(aij), "AIJ as? II")
assertEquals(null, notNullToNotNullI(baia), "BAIA as? II")
assertEquals(null, notNullToNotNullI(baiaif), "BAIAIF as? II")
assertEquals(baiaij, notNullToNotNullI(baiaij), "BAIAIJ as? II")
assertEquals(null, notNullToNotNullI(c), "C as? II")
assertEquals(null, notNullToNotNullI(cib), "CIB as? II")
assertEquals(null, notNullToNotNullI(d), "D as? II")
assertEquals(null, notNullToNotNullI(e), "E as? II")
assertEquals(null, notNullToNotNullI(f), "F as? II")
assertEquals(g, notNullToNotNullI(g), "G as? II")
assertEquals(null, notNullToNotNullI(an), "Any as? II")
assertEquals(null, dToB(dyn), "dynamic as? IB")
assertEquals(baiaij, dToB(baiaij), "BAIAIJ dynamic as? IB")
assertEquals(null, notNullToNotNullI({}), "Function as? II")
assertEquals(null, notNullToNotNullI(true), "Boolean as? II")
assertEquals(null, notNullToNotNullI(42), "Number as? II")
assertEquals(null, notNullToNotNullI("String"), "String as? II")
return "OK"
}
fun testInterfaceCast() {
assertEquals("OK", testInterfaceCastN2N())
assertEquals("OK", testInterfaceCastN2NN())
assertEquals("OK", testInterfaceCastNN2N())
assertEquals("OK", testInterfaceCastNN2NN())
}
fun box(): String {
testInterfaceCast()
return "OK"
}
@@ -0,0 +1,131 @@
// EXPECTED_REACHABLE_NODES: 1108
package foo
open class A
open class B : A()
open class C
open class D : B()
class E : D()
class F : C()
val dyn: dynamic = js("({})")
fun nullToNull(a: Any?) = a is B?
fun notNullToNull(a: Any) = a is B?
fun nullToNotNull(a: Any?) = a is B
fun notNullToNotNull(a: Any) = a is B
fun NBtoNB(b: B?) = b is B?
fun dtoNB(d: dynamic) = d is B?
fun testClassCastN2N(): String { // ? is ?
assertEquals(true, nullToNull(null), "null is B?")
assertEquals(false, nullToNull(A()), "A? is B?")
assertEquals(true, NBtoNB(B()), "B()? is B?")
assertEquals(true, NBtoNB(null), "null() is B?")
assertEquals(true, nullToNull(B()), "B? is B?")
assertEquals(false, nullToNull(C()), "C? is B?")
assertEquals(true, nullToNull(D()), "D? is B?")
assertEquals(true, nullToNull(E()), "E? is B?")
assertEquals(false, nullToNull(F()), "F? is B?")
assertEquals(false, nullToNull(Any()), "Any? is B?")
assertEquals(true, dtoNB(null), "null dynamic is B?")
assertEquals(false, nullToNull({}), "Function? is B?")
assertEquals(false, nullToNull(true), "Boolean? is B?")
assertEquals(false, nullToNull(42), "Number? is B?")
assertEquals(false, nullToNull("String"), "String? is B?")
return "OK"
}
fun NBtoB(b: B?) = b is B
fun testClassCastNN2N(): String { // ! is ?
assertEquals(false, notNullToNull(A()), "A is B?")
assertEquals(true, NBtoB(B()), "B() is B?")
assertEquals(false, NBtoB(null), "null() is B?")
assertEquals(true, notNullToNull(B()), "B is B?")
assertEquals(false, notNullToNull(C()), "C is B?")
assertEquals(true, notNullToNull(D()), "D is B?")
assertEquals(true, notNullToNull(E()), "E is B?")
assertEquals(false, notNullToNull(F()), "F is B?")
assertEquals(false, notNullToNull(Any()), "Any is B?")
assertEquals(false, dtoNB(dyn), "dynamic is B?")
assertEquals(false, notNullToNull({}), "Function is B?")
assertEquals(false, notNullToNull(true), "Boolean is B?")
assertEquals(false, notNullToNull(42), "Number is B?")
assertEquals(false, notNullToNull("String"), "String is B?")
return "OK"
}
fun BtoNB(b: B) = b is B?
fun anyNToAnyNN(a: Any?) = a is Any
fun dtoB(d: dynamic) = d is B
fun testClassCastN2NN(): String { // ? is !
assertEquals(false, nullToNotNull(null), "null is B")
assertEquals(false, nullToNotNull(A()), "A? is B")
assertEquals(true, BtoNB(B()), "B() is B?")
assertEquals(true, nullToNotNull(B()), "B? is B")
assertEquals(false, nullToNotNull(C()), "C? is B")
assertEquals(true, nullToNotNull(D()), "D? is B")
assertEquals(true, nullToNotNull(E()), "E? is B")
assertEquals(false, nullToNotNull(F()), "F? is B")
assertEquals(false, nullToNotNull(Any()), "Any? is B")
assertEquals(false, dtoB(null), "null dynamic is B")
assertEquals(true, anyNToAnyNN(Any()), "Any? is Any")
assertEquals(false, anyNToAnyNN(null), "null any is Any")
assertEquals(false, nullToNotNull({}), "Function? is B")
assertEquals(false, nullToNotNull(true), "Boolean? is B")
assertEquals(false, nullToNotNull(42), "Number? is B")
assertEquals(false, nullToNotNull("String"), "String? is B")
assertEquals(true, anyNToAnyNN({}), "Function? is Any")
assertEquals(true, anyNToAnyNN(true), "Boolean? is Any")
assertEquals(true, anyNToAnyNN(42), "Number? is Any")
assertEquals(true, anyNToAnyNN("String"), "String? is Any")
return "OK"
}
fun testClassCastNN2NN(): String { // ! is !
assertEquals(false, notNullToNotNull(A()), "A is B")
assertEquals(true, notNullToNotNull(B()), "B is B")
assertEquals(false, notNullToNotNull(C()), "C is B")
assertEquals(true, notNullToNotNull(D()), "D is B")
assertEquals(true, notNullToNotNull(E()), "E is B")
assertEquals(false, notNullToNotNull(F()), "F is B")
assertEquals(false, notNullToNotNull(Any()), "Any is B")
assertEquals(false, dtoB(dyn), "dynamic is B")
assertEquals(false, notNullToNotNull({}), "Function is II")
assertEquals(false, notNullToNotNull(true), "Boolean is II")
assertEquals(false, notNullToNotNull(42), "Number is II")
assertEquals(false, notNullToNotNull("String"), "String is II")
return "OK"
}
fun testClassCast() {
assertEquals("OK", testClassCastN2N())
assertEquals("OK", testClassCastN2NN())
assertEquals("OK", testClassCastNN2N())
assertEquals("OK", testClassCastNN2NN())
}
fun box(): String {
testClassCast()
return "OK"
}
@@ -0,0 +1,406 @@
// EXPECTED_REACHABLE_NODES: 1108
package foo
interface IA
interface IB : IA // B
interface IC : IA, IB // B, C
interface ID : IB // B
interface IE // E
interface IF : IB, IE // B, E
interface IG : ID // B
interface IH
interface II : IH // I
interface IJ : IF, II // B, E, I
interface IK : IC // B, C
interface IL: IK, IF, IJ // B, C, E, I
open class A //
open class AIA: A(), IA //
open class AIB: A(), IB // B
open class AIE: A(), IE // E
open class AIF: A(), IF // B, E
open class AIJ: A(), IJ // B, E, I
open class BAIA: AIA(), IC // B, C
open class BAIAIF: BAIA(), IF // B, C, E
open class BAIAIJ: BAIA(), IJ // B, C, E, I
open class C //
open class CIB: C(), IB // B
open class D: BAIAIF(), IG // B, C, E
open class E: A(), IF // B, E
open class F: AIB(), IK // B, C
open class G: E(), IL, IE // B, C, E, I
var dyn = js("({})")
fun dToNB(d: dynamic) = d is IB?
fun dToB(d: dynamic) = d is IB
fun NBtoB(b: IB?) = b is IB
fun BtoNB(b: IB) = b is IB?
fun nullToNullB(a: Any?) = a is IB?
fun notNullToNullB(a: Any) = a is IB?
fun nullToNotNullB(a: Any?) = a is IB
fun notNullToNotNullB(a: Any) = a is IB
fun nullToNullC(a: Any?) = a is IC?
fun notNullToNullC(a: Any) = a is IC?
fun nullToNotNullC(a: Any?) = a is IC
fun notNullToNotNullC(a: Any) = a is IC
fun nullToNullE(a: Any?) = a is IE?
fun notNullToNullE(a: Any) = a is IE?
fun nullToNotNullE(a: Any?) = a is IE
fun notNullToNotNullE(a: Any) = a is IE
fun nullToNullI(a: Any?) = a is II?
fun notNullToNullI(a: Any) = a is II?
fun nullToNotNullI(a: Any?) = a is II
fun notNullToNotNullI(a: Any) = a is II
fun testInterfaceCastN2N(): String {
assertEquals(true, nullToNullB(null), "null is IB?")
assertEquals(false, nullToNullB(A()), "A? is IB?")
assertEquals(false, nullToNullB(AIA()), "AIA? is IB?")
assertEquals(true, nullToNullB(AIB()), "AIB? is IB?")
assertEquals(false, nullToNullB(AIE()), "AIE? is IB?")
assertEquals(true, nullToNullB(AIF()), "AIF? is IB?")
assertEquals(true, nullToNullB(AIJ()), "AIJ? is IB?")
assertEquals(true, nullToNullB(BAIA()), "BAIA? is IB?")
assertEquals(true, nullToNullB(BAIAIF()), "BAIAIF? is IB?")
assertEquals(true, nullToNullB(BAIAIJ()), "BAIAIJ? is IB?")
assertEquals(false, nullToNullB(C()), "C? is IB?")
assertEquals(true, nullToNullB(CIB()), "CIB? is IB?")
assertEquals(true, nullToNullB(D()), "D? is IB?")
assertEquals(true, nullToNullB(E()), "E? is IB?")
assertEquals(true, nullToNullB(F()), "F? is IB?")
assertEquals(true, nullToNullB(G()), "G? is IB?")
assertEquals(false, nullToNullB(Any()), "Any? is IB?")
assertEquals(true, nullToNullC(null), "null is IC?")
assertEquals(false, nullToNullC(A()), "A? is IC?")
assertEquals(false, nullToNullC(AIA()), "AIA? is IC?")
assertEquals(false, nullToNullC(AIB()), "AIB? is IC?")
assertEquals(false, nullToNullC(AIE()), "AIE? is IC?")
assertEquals(false, nullToNullC(AIF()), "AIF? is IC?")
assertEquals(false, nullToNullC(AIJ()), "AIJ? is IC?")
assertEquals(true, nullToNullC(BAIA()), "BAIA? is IC?")
assertEquals(true, nullToNullC(BAIAIF()), "BAIAIF? is IC?")
assertEquals(true, nullToNullC(BAIAIJ()), "BAIAIJ? is IC?")
assertEquals(false, nullToNullC(C()), "C? is IC?")
assertEquals(false, nullToNullC(CIB()), "CIB? is IC?")
assertEquals(true, nullToNullC(D()), "D? is IC?")
assertEquals(false, nullToNullC(E()), "E? is IC?")
assertEquals(true, nullToNullC(F()), "F? is IC?")
assertEquals(true, nullToNullC(G()), "G? is IC?")
assertEquals(false, nullToNullC(Any()), "Any? is IC?")
assertEquals(true, nullToNullE(null), "null is IE?")
assertEquals(false, nullToNullE(A()), "A? is IE?")
assertEquals(false, nullToNullE(AIA()), "AIA? is IE?")
assertEquals(false, nullToNullE(AIB()), "AIB? is IE?")
assertEquals(true, nullToNullE(AIE()), "AIE? is IE?")
assertEquals(true, nullToNullE(AIF()), "AIF? is IE?")
assertEquals(true, nullToNullE(AIJ()), "AIJ? is IE?")
assertEquals(false, nullToNullE(BAIA()), "BAIA? is IE?")
assertEquals(true, nullToNullE(BAIAIF()), "BAIAIF? is IE?")
assertEquals(true, nullToNullE(BAIAIJ()), "BAIAIJ? is IE?")
assertEquals(false, nullToNullE(C()), "C? is IE?")
assertEquals(false, nullToNullE(CIB()), "CIB? is IE?")
assertEquals(true, nullToNullE(D()), "D? is IE?")
assertEquals(true, nullToNullE(E()), "E? is IE?")
assertEquals(false, nullToNullE(F()), "F? is IE?")
assertEquals(true, nullToNullE(G()), "G? is IE?")
assertEquals(false, nullToNullE(Any()), "Any? is IE?")
assertEquals(true, nullToNullI(null), "null is II?")
assertEquals(false, nullToNullI(A()), "A? is II?")
assertEquals(false, nullToNullI(AIA()), "AIA? is II?")
assertEquals(false, nullToNullI(AIB()), "AIB? is II?")
assertEquals(false, nullToNullI(AIE()), "AIE? is II?")
assertEquals(false, nullToNullI(AIF()), "AIF? is II?")
assertEquals(true, nullToNullI(AIJ()), "AIJ? is II?")
assertEquals(false, nullToNullI(BAIA()), "BAIA? is II?")
assertEquals(false, nullToNullI(BAIAIF()), "BAIAIF? is II?")
assertEquals(true, nullToNullI(BAIAIJ()), "BAIAIJ? is II?")
assertEquals(false, nullToNullI(C()), "C? is II?")
assertEquals(false, nullToNullI(CIB()), "CIB? is II?")
assertEquals(false, nullToNullI(D()), "D? is II?")
assertEquals(false, nullToNullI(E()), "E? is II?")
assertEquals(false, nullToNullI(F()), "F? is II?")
assertEquals(true, nullToNullI(G()), "G? is II?")
assertEquals(false, nullToNullI(Any()), "Any? is II?")
assertEquals(true, dToNB(null), "null dynamic is IB?")
assertEquals(false, nullToNullI({}), "Function? is II?")
assertEquals(false, nullToNullI(true), "Boolean? is II?")
assertEquals(false, nullToNullI(42), "Number? is II?")
assertEquals(false, nullToNullI("String"), "String? is II?")
return "OK"
}
fun testInterfaceCastN2NN(): String {
assertEquals(false, nullToNotNullB(null), "null is IB")
assertEquals(false, nullToNotNullB(A()), "A? is IB")
assertEquals(false, nullToNotNullB(AIA()), "AIA? is IB")
assertEquals(true, nullToNotNullB(AIB()), "AIB? is IB")
assertEquals(false, nullToNotNullB(AIE()), "AIE? is IB")
assertEquals(true, nullToNotNullB(AIF()), "AIF? is IB")
assertEquals(true, nullToNotNullB(AIJ()), "AIJ? is IB")
assertEquals(true, nullToNotNullB(BAIA()), "BAIA? is IB")
assertEquals(true, nullToNotNullB(BAIAIF()), "BAIAIF? is IB")
assertEquals(true, nullToNotNullB(BAIAIJ()), "BAIAIJ? is IB")
assertEquals(false, nullToNotNullB(C()), "C? is IB")
assertEquals(true, nullToNotNullB(CIB()), "CIB? is IB")
assertEquals(true, nullToNotNullB(D()), "D? is IB")
assertEquals(true, nullToNotNullB(E()), "E? is IB")
assertEquals(true, nullToNotNullB(F()), "F? is IB")
assertEquals(true, nullToNotNullB(G()), "G? is IB")
assertEquals(false, nullToNotNullB(Any()), "Any? is IB")
assertEquals(false, nullToNotNullC(null), "null is IC")
assertEquals(false, nullToNotNullC(A()), "A? is IC")
assertEquals(false, nullToNotNullC(AIA()), "AIA? is IC")
assertEquals(false, nullToNotNullC(AIB()), "AIB? is IC")
assertEquals(false, nullToNotNullC(AIE()), "AIE? is IC")
assertEquals(false, nullToNotNullC(AIF()), "AIF? is IC")
assertEquals(false, nullToNotNullC(AIJ()), "AIJ? is IC")
assertEquals(true, nullToNotNullC(BAIA()), "BAIA? is IC")
assertEquals(true, nullToNotNullC(BAIAIF()), "BAIAIF? is IC")
assertEquals(true, nullToNotNullC(BAIAIJ()), "BAIAIJ? is IC")
assertEquals(false, nullToNotNullC(C()), "C? is IC")
assertEquals(false, nullToNotNullC(CIB()), "CIB? is IC")
assertEquals(true, nullToNotNullC(D()), "D? is IC")
assertEquals(false, nullToNotNullC(E()), "E? is IC")
assertEquals(true, nullToNotNullC(F()), "F? is IC")
assertEquals(true, nullToNotNullC(G()), "G? is IC")
assertEquals(false, nullToNotNullC(Any()), "Any? is IC")
assertEquals(false, nullToNotNullE(null), "null is IE")
assertEquals(false, nullToNotNullE(A()), "A? is IE")
assertEquals(false, nullToNotNullE(AIA()), "AIA? is IE")
assertEquals(false, nullToNotNullE(AIB()), "AIB? is IE")
assertEquals(true, nullToNotNullE(AIE()), "AIE? is IE")
assertEquals(true, nullToNotNullE(AIF()), "AIF? is IE")
assertEquals(true, nullToNotNullE(AIJ()), "AIJ? is IE")
assertEquals(false, nullToNotNullE(BAIA()), "BAIA? is IE")
assertEquals(true, nullToNotNullE(BAIAIF()), "BAIAIF? is IE")
assertEquals(true, nullToNotNullE(BAIAIJ()), "BAIAIJ? is IE")
assertEquals(false, nullToNotNullE(C()), "C? is IE")
assertEquals(false, nullToNotNullE(CIB()), "CIB? is IE")
assertEquals(true, nullToNotNullE(D()), "D? is IE")
assertEquals(true, nullToNotNullE(E()), "E? is IE")
assertEquals(false, nullToNotNullE(F()), "F? is IE")
assertEquals(true, nullToNotNullE(G()), "G? is IE")
assertEquals(false, nullToNotNullE(Any()), "Any? is IE")
assertEquals(false, nullToNotNullI(null), "null is II")
assertEquals(false, nullToNotNullI(A()), "A? is II")
assertEquals(false, nullToNotNullI(AIA()), "AIA? is II")
assertEquals(false, nullToNotNullI(AIB()), "AIB? is II")
assertEquals(false, nullToNotNullI(AIE()), "AIE? is II")
assertEquals(false, nullToNotNullI(AIF()), "AIF? is II")
assertEquals(true, nullToNotNullI(AIJ()), "AIJ? is II")
assertEquals(false, nullToNotNullI(BAIA()), "BAIA? is II")
assertEquals(false, nullToNotNullI(BAIAIF()), "BAIAIF? is II")
assertEquals(true, nullToNotNullI(BAIAIJ()), "BAIAIJ? is II")
assertEquals(false, nullToNotNullI(C()), "C? is II")
assertEquals(false, nullToNotNullI(CIB()), "CIB? is II")
assertEquals(false, nullToNotNullI(D()), "D? is II")
assertEquals(false, nullToNotNullI(E()), "E? is II")
assertEquals(false, nullToNotNullI(F()), "F? is II")
assertEquals(true, nullToNotNullI(G()), "G? is II")
assertEquals(false, nullToNotNullI(Any()), "Any? is II")
assertEquals(false, dToB(null), "null dynamic is IB")
assertEquals(true, NBtoB(AIB()), "IB()? is IB")
assertEquals(false, NBtoB(null), "null IB is IB")
assertEquals(false, nullToNotNullI({}), "Function? is II")
assertEquals(false, nullToNotNullI(true), "Boolean? is II")
assertEquals(false, nullToNotNullI(42), "Number? is II")
assertEquals(false, nullToNotNullI("String"), "String? is II")
return "OK"
}
fun testInterfaceCastNN2N(): String {
assertEquals(false, notNullToNullB(A()), "A is IB?")
assertEquals(false, notNullToNullB(AIA()), "AIA is IB?")
assertEquals(true, notNullToNullB(AIB()), "AIB is IB?")
assertEquals(false, notNullToNullB(AIE()), "AIE is IB?")
assertEquals(true, notNullToNullB(AIF()), "AIF is IB?")
assertEquals(true, notNullToNullB(AIJ()), "AIJ is IB?")
assertEquals(true, notNullToNullB(BAIA()), "BAIA is IB?")
assertEquals(true, notNullToNullB(BAIAIF()), "BAIAIF is IB?")
assertEquals(true, notNullToNullB(BAIAIJ()), "BAIAIJ is IB?")
assertEquals(false, notNullToNullB(C()), "C is IB?")
assertEquals(true, notNullToNullB(CIB()), "CIB is IB?")
assertEquals(true, notNullToNullB(D()), "D is IB?")
assertEquals(true, notNullToNullB(E()), "E is IB?")
assertEquals(true, notNullToNullB(F()), "F is IB?")
assertEquals(true, notNullToNullB(G()), "G is IB?")
assertEquals(false, notNullToNullB(Any()), "Any is IB?")
assertEquals(false, notNullToNullC(A()), "A is IC?")
assertEquals(false, notNullToNullC(AIA()), "AIA is IC?")
assertEquals(false, notNullToNullC(AIB()), "AIB is IC?")
assertEquals(false, notNullToNullC(AIE()), "AIE is IC?")
assertEquals(false, notNullToNullC(AIF()), "AIF is IC?")
assertEquals(false, notNullToNullC(AIJ()), "AIJ is IC?")
assertEquals(true, notNullToNullC(BAIA()), "BAIA is IC?")
assertEquals(true, notNullToNullC(BAIAIF()), "BAIAIF is IC?")
assertEquals(true, notNullToNullC(BAIAIJ()), "BAIAIJ is IC?")
assertEquals(false, notNullToNullC(C()), "C is IC?")
assertEquals(false, notNullToNullC(CIB()), "CIB is IC?")
assertEquals(true, notNullToNullC(D()), "D is IC?")
assertEquals(false, notNullToNullC(E()), "E is IC?")
assertEquals(true, notNullToNullC(F()), "F is IC?")
assertEquals(true, notNullToNullC(G()), "G is IC?")
assertEquals(false, notNullToNullC(Any()), "Any is IC?")
assertEquals(false, notNullToNullE(A()), "A is IE?")
assertEquals(false, notNullToNullE(AIA()), "AIA is IE?")
assertEquals(false, notNullToNullE(AIB()), "AIB is IE?")
assertEquals(true, notNullToNullE(AIE()), "AIE is IE?")
assertEquals(true, notNullToNullE(AIF()), "AIF is IE?")
assertEquals(true, notNullToNullE(AIJ()), "AIJ is IE?")
assertEquals(false, notNullToNullE(BAIA()), "BAIA is IE?")
assertEquals(true, notNullToNullE(BAIAIF()), "BAIAIF is IE?")
assertEquals(true, notNullToNullE(BAIAIJ()), "BAIAIJ is IE?")
assertEquals(false, notNullToNullE(C()), "C is IE?")
assertEquals(false, notNullToNullE(CIB()), "CIB is IE?")
assertEquals(true, notNullToNullE(D()), "D is IE?")
assertEquals(true, notNullToNullE(E()), "E is IE?")
assertEquals(false, notNullToNullE(F()), "F is IE?")
assertEquals(true, notNullToNullE(G()), "G is IE?")
assertEquals(false, notNullToNullE(Any()), "Any is IE?")
assertEquals(false, notNullToNullI(A()), "A is II?")
assertEquals(false, notNullToNullI(AIA()), "AIA is II?")
assertEquals(false, notNullToNullI(AIB()), "AIB is II?")
assertEquals(false, notNullToNullI(AIE()), "AIE is II?")
assertEquals(false, notNullToNullI(AIF()), "AIF is II?")
assertEquals(true, notNullToNullI(AIJ()), "AIJ is II?")
assertEquals(false, notNullToNullI(BAIA()), "BAIA is II?")
assertEquals(false, notNullToNullI(BAIAIF()), "BAIAIF is II?")
assertEquals(true, notNullToNullI(BAIAIJ()), "BAIAIJ is II?")
assertEquals(false, notNullToNullI(C()), "C is II?")
assertEquals(false, notNullToNullI(CIB()), "CIB is II?")
assertEquals(false, notNullToNullI(D()), "D is II?")
assertEquals(false, notNullToNullI(E()), "E is II?")
assertEquals(false, notNullToNullI(F()), "F is II?")
assertEquals(true, notNullToNullI(G()), "G is II?")
assertEquals(false, notNullToNullI(Any()), "Any is II?")
assertEquals(false, dToNB(dyn), "dynamic is IB?")
assertEquals(true, dToNB(BAIAIJ()), "BAIAIJ dynamic is IB?")
assertEquals(true, BtoNB(AIB()), "IB() is IB?")
assertEquals(false, notNullToNullI({}), "Function is II?")
assertEquals(false, notNullToNullI(true), "Boolean is II?")
assertEquals(false, notNullToNullI(42), "Number is II?")
assertEquals(false, notNullToNullI("String"), "String is II?")
return "OK"
}
fun testInterfaceCastNN2NN(): String {
assertEquals(false, notNullToNotNullB(A()), "A is IB")
assertEquals(false, notNullToNotNullB(AIA()), "AIA is IB")
assertEquals(true, notNullToNotNullB(AIB()), "AIB is IB")
assertEquals(false, notNullToNotNullB(AIE()), "AIE is IB")
assertEquals(true, notNullToNotNullB(AIF()), "AIF is IB")
assertEquals(true, notNullToNotNullB(AIJ()), "AIJ is IB")
assertEquals(true, notNullToNotNullB(BAIA()), "BAIA is IB")
assertEquals(true, notNullToNotNullB(BAIAIF()), "BAIAIF is IB")
assertEquals(true, notNullToNotNullB(BAIAIJ()), "BAIAIJ is IB")
assertEquals(false, notNullToNotNullB(C()), "C is IB")
assertEquals(true, notNullToNotNullB(CIB()), "CIB is IB")
assertEquals(true, notNullToNotNullB(D()), "D is IB")
assertEquals(true, notNullToNotNullB(E()), "E is IB")
assertEquals(true, notNullToNotNullB(F()), "F is IB")
assertEquals(true, notNullToNotNullB(G()), "G is IB")
assertEquals(false, notNullToNotNullB(Any()), "Any is IB")
assertEquals(false, notNullToNotNullC(A()), "A is IC")
assertEquals(false, notNullToNotNullC(AIA()), "AIA is IC")
assertEquals(false, notNullToNotNullC(AIB()), "AIB is IC")
assertEquals(false, notNullToNotNullC(AIE()), "AIE is IC")
assertEquals(false, notNullToNotNullC(AIF()), "AIF is IC")
assertEquals(false, notNullToNotNullC(AIJ()), "AIJ is IC")
assertEquals(true, notNullToNotNullC(BAIA()), "BAIA is IC")
assertEquals(true, notNullToNotNullC(BAIAIF()), "BAIAIF is IC")
assertEquals(true, notNullToNotNullC(BAIAIJ()), "BAIAIJ is IC")
assertEquals(false, notNullToNotNullC(C()), "C is IC")
assertEquals(false, notNullToNotNullC(CIB()), "CIB is IC")
assertEquals(true, notNullToNotNullC(D()), "D is IC")
assertEquals(false, notNullToNotNullC(E()), "E is IC")
assertEquals(true, notNullToNotNullC(F()), "F is IC")
assertEquals(true, notNullToNotNullC(G()), "G is IC")
assertEquals(false, notNullToNotNullC(Any()), "Any is IC")
assertEquals(false, notNullToNotNullE(A()), "A is IE")
assertEquals(false, notNullToNotNullE(AIA()), "AIA is IE")
assertEquals(false, notNullToNotNullE(AIB()), "AIB is IE")
assertEquals(true, notNullToNotNullE(AIE()), "AIE is IE")
assertEquals(true, notNullToNotNullE(AIF()), "AIF is IE")
assertEquals(true, notNullToNotNullE(AIJ()), "AIJ is IE")
assertEquals(false, notNullToNotNullE(BAIA()), "BAIA is IE")
assertEquals(true, notNullToNotNullE(BAIAIF()), "BAIAIF is IE")
assertEquals(true, notNullToNotNullE(BAIAIJ()), "BAIAIJ is IE")
assertEquals(false, notNullToNotNullE(C()), "C is IE")
assertEquals(false, notNullToNotNullE(CIB()), "CIB is IE")
assertEquals(true, notNullToNotNullE(D()), "D is IE")
assertEquals(true, notNullToNotNullE(E()), "E is IE")
assertEquals(false, notNullToNotNullE(F()), "F is IE")
assertEquals(true, notNullToNotNullE(G()), "G is IE")
assertEquals(false, notNullToNotNullE(Any()), "Any is IE")
assertEquals(false, notNullToNotNullI(A()), "A is II")
assertEquals(false, notNullToNotNullI(AIA()), "AIA is II")
assertEquals(false, notNullToNotNullI(AIB()), "AIB is II")
assertEquals(false, notNullToNotNullI(AIE()), "AIE is II")
assertEquals(false, notNullToNotNullI(AIF()), "AIF is II")
assertEquals(true, notNullToNotNullI(AIJ()), "AIJ is II")
assertEquals(false, notNullToNotNullI(BAIA()), "BAIA is II")
assertEquals(false, notNullToNotNullI(BAIAIF()), "BAIAIF is II")
assertEquals(true, notNullToNotNullI(BAIAIJ()), "BAIAIJ is II")
assertEquals(false, notNullToNotNullI(C()), "C is II")
assertEquals(false, notNullToNotNullI(CIB()), "CIB is II")
assertEquals(false, notNullToNotNullI(D()), "D is II")
assertEquals(false, notNullToNotNullI(E()), "E is II")
assertEquals(false, notNullToNotNullI(F()), "F is II")
assertEquals(true, notNullToNotNullI(G()), "G is II")
assertEquals(false, notNullToNotNullI(Any()), "Any is II")
assertEquals(false, dToB(dyn), "dynamic is IB")
assertEquals(true, dToB(BAIAIJ()), "BAIAIJ dynamic is IB")
assertEquals(false, notNullToNotNullI({}), "Function is II")
assertEquals(false, notNullToNotNullI(true), "Boolean is II")
assertEquals(false, notNullToNotNullI(42), "Number is II")
assertEquals(false, notNullToNotNullI("String"), "String is II")
return "OK"
}
fun testInterfaceCast() {
assertEquals("OK", testInterfaceCastN2N())
assertEquals("OK", testInterfaceCastN2NN())
assertEquals("OK", testInterfaceCastNN2N())
assertEquals("OK", testInterfaceCastNN2NN())
}
fun box(): String {
testInterfaceCast()
return "OK"
}
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1110
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1115
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1110
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1110
package foo
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JS_IR
// EXPECTED_REACHABLE_NODES: 1112
package foo