diff --git a/compiler/testData/codegen/box/arrays/kt238.kt b/compiler/testData/codegen/box/arrays/kt238.kt index f284e5e3584..71c935d5c9d 100644 --- a/compiler/testData/codegen/box/arrays/kt238.kt +++ b/compiler/testData/codegen/box/arrays/kt238.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun t1 () { val a1 = arrayOfNulls(1) a1[0] = "0" //ok diff --git a/compiler/testData/codegen/box/bridges/delegationComplex.kt b/compiler/testData/codegen/box/bridges/delegationComplex.kt index 13dae1ace1e..77af8d7e9b5 100644 --- a/compiler/testData/codegen/box/bridges/delegationComplex.kt +++ b/compiler/testData/codegen/box/bridges/delegationComplex.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class Content() { override fun toString() = "OK" } diff --git a/compiler/testData/codegen/box/bridges/fakeCovariantOverride.kt b/compiler/testData/codegen/box/bridges/fakeCovariantOverride.kt index 672bdac2857..e62de29d55a 100644 --- a/compiler/testData/codegen/box/bridges/fakeCovariantOverride.kt +++ b/compiler/testData/codegen/box/bridges/fakeCovariantOverride.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // KT-4145 interface A { diff --git a/compiler/testData/codegen/box/bridges/fakeOverrideWithSeveralSuperDeclarations.kt b/compiler/testData/codegen/box/bridges/fakeOverrideWithSeveralSuperDeclarations.kt index e901b3a82ae..c9844928db7 100644 --- a/compiler/testData/codegen/box/bridges/fakeOverrideWithSeveralSuperDeclarations.kt +++ b/compiler/testData/codegen/box/bridges/fakeOverrideWithSeveralSuperDeclarations.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface D1 { fun foo(): Any } diff --git a/compiler/testData/codegen/box/bridges/genericProperty.kt b/compiler/testData/codegen/box/bridges/genericProperty.kt index 2968fc7b1ea..be4000a62e3 100644 --- a/compiler/testData/codegen/box/bridges/genericProperty.kt +++ b/compiler/testData/codegen/box/bridges/genericProperty.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A { var size: T = 56 as T } diff --git a/compiler/testData/codegen/box/bridges/kt2833.kt b/compiler/testData/codegen/box/bridges/kt2833.kt index 7dcc22296ad..50a2989d904 100644 --- a/compiler/testData/codegen/box/bridges/kt2833.kt +++ b/compiler/testData/codegen/box/bridges/kt2833.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR package test public interface FunDependencyEdge { diff --git a/compiler/testData/codegen/box/bridges/propertyAccessorsWithoutBody.kt b/compiler/testData/codegen/box/bridges/propertyAccessorsWithoutBody.kt index a2cc46288af..82a9b0b930c 100644 --- a/compiler/testData/codegen/box/bridges/propertyAccessorsWithoutBody.kt +++ b/compiler/testData/codegen/box/bridges/propertyAccessorsWithoutBody.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A { open var x: T = "Fail" as T get diff --git a/compiler/testData/codegen/box/callableReference/function/innerClassConstructorWithTwoReceivers.kt b/compiler/testData/codegen/box/callableReference/function/innerClassConstructorWithTwoReceivers.kt index 393db169ac7..35fa6ffc598 100644 --- a/compiler/testData/codegen/box/callableReference/function/innerClassConstructorWithTwoReceivers.kt +++ b/compiler/testData/codegen/box/callableReference/function/innerClassConstructorWithTwoReceivers.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR abstract class A { inner class InnerInA { fun returnOk() = "OK" diff --git a/compiler/testData/codegen/box/callableReference/property/kt12044.kt b/compiler/testData/codegen/box/callableReference/property/kt12044.kt index d3521b36f2c..ea43b14b545 100644 --- a/compiler/testData/codegen/box/callableReference/property/kt12044.kt +++ b/compiler/testData/codegen/box/callableReference/property/kt12044.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // KT-12044 Assertion "Rewrite at slice LEXICAL_SCOPE" for 'if' with property references fun box(): String { diff --git a/compiler/testData/codegen/box/callableReference/property/kt14330.kt b/compiler/testData/codegen/box/callableReference/property/kt14330.kt index 5721c51d167..43969a5fd1a 100644 --- a/compiler/testData/codegen/box/callableReference/property/kt14330.kt +++ b/compiler/testData/codegen/box/callableReference/property/kt14330.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class Foo(var bar: Int?) fun box(): String { diff --git a/compiler/testData/codegen/box/callableReference/property/simpleMutableMember.kt b/compiler/testData/codegen/box/callableReference/property/simpleMutableMember.kt index 6d5d1ac501a..f7d815af3fc 100644 --- a/compiler/testData/codegen/box/callableReference/property/simpleMutableMember.kt +++ b/compiler/testData/codegen/box/callableReference/property/simpleMutableMember.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class Box(var value: String) fun box(): String { diff --git a/compiler/testData/codegen/box/casts/asSafeFail.kt b/compiler/testData/codegen/box/casts/asSafeFail.kt index c985c75bea2..c3500dd5c1a 100644 --- a/compiler/testData/codegen/box/casts/asSafeFail.kt +++ b/compiler/testData/codegen/box/casts/asSafeFail.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class A class B diff --git a/compiler/testData/codegen/box/casts/unitAsSafeAny.kt b/compiler/testData/codegen/box/casts/unitAsSafeAny.kt index c7dc0e30d15..81d5a495425 100644 --- a/compiler/testData/codegen/box/casts/unitAsSafeAny.kt +++ b/compiler/testData/codegen/box/casts/unitAsSafeAny.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun println(s: String) { } diff --git a/compiler/testData/codegen/box/casts/unitNullableCast.kt b/compiler/testData/codegen/box/casts/unitNullableCast.kt index 8518c575ded..c0f644e88a5 100644 --- a/compiler/testData/codegen/box/casts/unitNullableCast.kt +++ b/compiler/testData/codegen/box/casts/unitNullableCast.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun foo() {} fun bar(): Int? = foo() as? Int diff --git a/compiler/testData/codegen/box/checkcastOptimization/kt19128.kt b/compiler/testData/codegen/box/checkcastOptimization/kt19128.kt index 7f6240a44f3..07117907188 100644 --- a/compiler/testData/codegen/box/checkcastOptimization/kt19128.kt +++ b/compiler/testData/codegen/box/checkcastOptimization/kt19128.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class A class B diff --git a/compiler/testData/codegen/box/classes/classObject.kt b/compiler/testData/codegen/box/classes/classObject.kt index 46f5280b694..c8da87c8a7f 100644 --- a/compiler/testData/codegen/box/classes/classObject.kt +++ b/compiler/testData/codegen/box/classes/classObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class C() { companion object { fun create() = C() diff --git a/compiler/testData/codegen/box/classes/delegation3.kt b/compiler/testData/codegen/box/classes/delegation3.kt index d03d3caa72e..fd4f07800a2 100644 --- a/compiler/testData/codegen/box/classes/delegation3.kt +++ b/compiler/testData/codegen/box/classes/delegation3.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface One { public open fun foo() : Int public open fun faz() : Int = 10 diff --git a/compiler/testData/codegen/box/classes/delegation4.kt b/compiler/testData/codegen/box/classes/delegation4.kt index 33d96baef2a..7a9c9449e58 100644 --- a/compiler/testData/codegen/box/classes/delegation4.kt +++ b/compiler/testData/codegen/box/classes/delegation4.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface First { public open fun foo() : Int } diff --git a/compiler/testData/codegen/box/classes/inner/instantiateInDerivedLabeled.kt b/compiler/testData/codegen/box/classes/inner/instantiateInDerivedLabeled.kt index cc11c91b7ac..34db2545d47 100644 --- a/compiler/testData/codegen/box/classes/inner/instantiateInDerivedLabeled.kt +++ b/compiler/testData/codegen/box/classes/inner/instantiateInDerivedLabeled.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A(val value: String) { inner class B(val s: String) { val result = value + "_" + s diff --git a/compiler/testData/codegen/box/classes/kt1721.kt b/compiler/testData/codegen/box/classes/kt1721.kt index 6432c47818c..c38869f87b8 100644 --- a/compiler/testData/codegen/box/classes/kt1721.kt +++ b/compiler/testData/codegen/box/classes/kt1721.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class T(val f : () -> Any?) { fun call() : Any? = f() } diff --git a/compiler/testData/codegen/box/classes/kt1918.kt b/compiler/testData/codegen/box/classes/kt1918.kt index 8c7fb218e79..1da1471e2d3 100644 --- a/compiler/testData/codegen/box/classes/kt1918.kt +++ b/compiler/testData/codegen/box/classes/kt1918.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class Bar { } diff --git a/compiler/testData/codegen/box/classes/kt5347.kt b/compiler/testData/codegen/box/classes/kt5347.kt index b86b966445d..cca6a97b08e 100644 --- a/compiler/testData/codegen/box/classes/kt5347.kt +++ b/compiler/testData/codegen/box/classes/kt5347.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun test1(str: String): String { data class A(val x: Int) { fun foo() = str diff --git a/compiler/testData/codegen/box/classes/typedDelegation.kt b/compiler/testData/codegen/box/classes/typedDelegation.kt index 4cace011f61..e0b1241a6aa 100644 --- a/compiler/testData/codegen/box/classes/typedDelegation.kt +++ b/compiler/testData/codegen/box/classes/typedDelegation.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface A { var zzzValue : T fun zzz() : T diff --git a/compiler/testData/codegen/box/constants/constantsInWhen.kt b/compiler/testData/codegen/box/constants/constantsInWhen.kt index 7dc50d22e8e..cbc39e03146 100644 --- a/compiler/testData/codegen/box/constants/constantsInWhen.kt +++ b/compiler/testData/codegen/box/constants/constantsInWhen.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun test( b: Boolean, i: Int diff --git a/compiler/testData/codegen/box/dataClasses/changingVarParam.kt b/compiler/testData/codegen/box/dataClasses/changingVarParam.kt index 17e2e1000ea..56f9c63561f 100644 --- a/compiler/testData/codegen/box/dataClasses/changingVarParam.kt +++ b/compiler/testData/codegen/box/dataClasses/changingVarParam.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(var string: String) fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/copy/kt12708.kt b/compiler/testData/codegen/box/dataClasses/copy/kt12708.kt index 93d9da7516c..e3c5e6485b9 100644 --- a/compiler/testData/codegen/box/dataClasses/copy/kt12708.kt +++ b/compiler/testData/codegen/box/dataClasses/copy/kt12708.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // LANGUAGE_VERSION: 1.1 fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/copy/withGenericParameter.kt b/compiler/testData/codegen/box/dataClasses/copy/withGenericParameter.kt index f76e552a7bb..83a4d82db02 100644 --- a/compiler/testData/codegen/box/dataClasses/copy/withGenericParameter.kt +++ b/compiler/testData/codegen/box/dataClasses/copy/withGenericParameter.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val a: Foo) {} class Foo(val a: T) { } diff --git a/compiler/testData/codegen/box/dataClasses/equals/null.kt b/compiler/testData/codegen/box/dataClasses/equals/null.kt index 5b772b7c1c1..a6008d0d670 100644 --- a/compiler/testData/codegen/box/dataClasses/equals/null.kt +++ b/compiler/testData/codegen/box/dataClasses/equals/null.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val v: Any?) data class B(val v: T) diff --git a/compiler/testData/codegen/box/dataClasses/equals/nullother.kt b/compiler/testData/codegen/box/dataClasses/equals/nullother.kt index cc0f0556909..bb0f764e061 100644 --- a/compiler/testData/codegen/box/dataClasses/equals/nullother.kt +++ b/compiler/testData/codegen/box/dataClasses/equals/nullother.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class Dummy { override fun equals(other: Any?) = true } diff --git a/compiler/testData/codegen/box/dataClasses/hashCode/alreadyDeclared.kt b/compiler/testData/codegen/box/dataClasses/hashCode/alreadyDeclared.kt index d559198c16a..ee7b621c974 100644 --- a/compiler/testData/codegen/box/dataClasses/hashCode/alreadyDeclared.kt +++ b/compiler/testData/codegen/box/dataClasses/hashCode/alreadyDeclared.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: Int) { override fun hashCode(): Int = -3 } diff --git a/compiler/testData/codegen/box/dataClasses/hashCode/genericNull.kt b/compiler/testData/codegen/box/dataClasses/hashCode/genericNull.kt index 63788b885cb..6987eab9670 100644 --- a/compiler/testData/codegen/box/dataClasses/hashCode/genericNull.kt +++ b/compiler/testData/codegen/box/dataClasses/hashCode/genericNull.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val t: T) fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/hashCode/null.kt b/compiler/testData/codegen/box/dataClasses/hashCode/null.kt index 5c778717618..75777abec50 100644 --- a/compiler/testData/codegen/box/dataClasses/hashCode/null.kt +++ b/compiler/testData/codegen/box/dataClasses/hashCode/null.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val a: Any?, var x: Int) data class B(val a: Any?) data class C(val a: Int, var x: Int?) diff --git a/compiler/testData/codegen/box/dataClasses/mixedParams.kt b/compiler/testData/codegen/box/dataClasses/mixedParams.kt index d79fb5ab233..90637df9768 100644 --- a/compiler/testData/codegen/box/dataClasses/mixedParams.kt +++ b/compiler/testData/codegen/box/dataClasses/mixedParams.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(var x: Int, val z: Int) fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/multiDeclaration.kt b/compiler/testData/codegen/box/dataClasses/multiDeclaration.kt index b6c717b732b..c74ea42a4a3 100644 --- a/compiler/testData/codegen/box/dataClasses/multiDeclaration.kt +++ b/compiler/testData/codegen/box/dataClasses/multiDeclaration.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: Int, val y: Any?, val z: String) fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/nonTrivialMemberInSuperClass.kt b/compiler/testData/codegen/box/dataClasses/nonTrivialMemberInSuperClass.kt index 6d48bb7eef8..32287fbd597 100644 --- a/compiler/testData/codegen/box/dataClasses/nonTrivialMemberInSuperClass.kt +++ b/compiler/testData/codegen/box/dataClasses/nonTrivialMemberInSuperClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // See KT-6206 Always generate hashCode() and equals() for data classes even if base classes have non-trivial analogs abstract class Base { diff --git a/compiler/testData/codegen/box/dataClasses/toString/alreadyDeclared.kt b/compiler/testData/codegen/box/dataClasses/toString/alreadyDeclared.kt index 230499dad54..f95ea92633c 100644 --- a/compiler/testData/codegen/box/dataClasses/toString/alreadyDeclared.kt +++ b/compiler/testData/codegen/box/dataClasses/toString/alreadyDeclared.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: Int) { override fun toString(): String = "!" } diff --git a/compiler/testData/codegen/box/dataClasses/toString/changingVarParam.kt b/compiler/testData/codegen/box/dataClasses/toString/changingVarParam.kt index 868983bc02a..0268af29435 100644 --- a/compiler/testData/codegen/box/dataClasses/toString/changingVarParam.kt +++ b/compiler/testData/codegen/box/dataClasses/toString/changingVarParam.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(var string: String) fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/toString/mixedParams.kt b/compiler/testData/codegen/box/dataClasses/toString/mixedParams.kt index a76199334d8..a8e9b7dbd20 100644 --- a/compiler/testData/codegen/box/dataClasses/toString/mixedParams.kt +++ b/compiler/testData/codegen/box/dataClasses/toString/mixedParams.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(var x: Int, val z: Int?) fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/twoValParams.kt b/compiler/testData/codegen/box/dataClasses/twoValParams.kt index 8f8c78e7b4b..91b918b1a8c 100644 --- a/compiler/testData/codegen/box/dataClasses/twoValParams.kt +++ b/compiler/testData/codegen/box/dataClasses/twoValParams.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: Int, val y: String) fun box(): String { diff --git a/compiler/testData/codegen/box/dataClasses/twoVarParams.kt b/compiler/testData/codegen/box/dataClasses/twoVarParams.kt index 912fe3e07bb..053cfe55892 100644 --- a/compiler/testData/codegen/box/dataClasses/twoVarParams.kt +++ b/compiler/testData/codegen/box/dataClasses/twoVarParams.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(var x: Int, var y: String) fun box(): String { diff --git a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/generic.kt b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/generic.kt index 003b65d7d0f..4dadddb91cd 100644 --- a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/generic.kt +++ b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/generic.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: T, val y: F) fun foo(a: A, block: (A) -> String) = block(a) diff --git a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/inline.kt b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/inline.kt index 95dc8a354f6..6835b91f21c 100644 --- a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/inline.kt +++ b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/inline.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: String, val y: String) inline fun foo(a: A, block: (A) -> String): String = block(a) diff --git a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/otherParameters.kt b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/otherParameters.kt index 24f82219463..f973aca1710 100644 --- a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/otherParameters.kt +++ b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/otherParameters.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: String, val y: String) fun foo(a: A, block: (Int, A, String) -> String): String = block(1, a, "#") diff --git a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/simple.kt b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/simple.kt index 899b0809eb1..50523e3fec4 100644 --- a/compiler/testData/codegen/box/destructuringDeclInLambdaParam/simple.kt +++ b/compiler/testData/codegen/box/destructuringDeclInLambdaParam/simple.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val x: String, val y: String) fun foo(a: A, block: (A) -> String): String = block(a) diff --git a/compiler/testData/codegen/box/extensionFunctions/kt1776.kt b/compiler/testData/codegen/box/extensionFunctions/kt1776.kt index 40e707138ae..5174d4cc374 100644 --- a/compiler/testData/codegen/box/extensionFunctions/kt1776.kt +++ b/compiler/testData/codegen/box/extensionFunctions/kt1776.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface Expr { public fun ttFun() : Int = 12 } diff --git a/compiler/testData/codegen/box/fieldRename/genericPropertyWithItself.kt b/compiler/testData/codegen/box/fieldRename/genericPropertyWithItself.kt index 142cd2a79f3..ea584c3a917 100644 --- a/compiler/testData/codegen/box/fieldRename/genericPropertyWithItself.kt +++ b/compiler/testData/codegen/box/fieldRename/genericPropertyWithItself.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR public class MPair ( public val first: A ) { diff --git a/compiler/testData/codegen/box/functions/invoke/castFunctionToExtension.kt b/compiler/testData/codegen/box/functions/invoke/castFunctionToExtension.kt index 525c772f1cd..cb638d7b24f 100644 --- a/compiler/testData/codegen/box/functions/invoke/castFunctionToExtension.kt +++ b/compiler/testData/codegen/box/functions/invoke/castFunctionToExtension.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun box(): String { val f = fun (s: String): String = s val g = f as String.() -> String diff --git a/compiler/testData/codegen/box/ieee754/anyToReal.kt b/compiler/testData/codegen/box/ieee754/anyToReal.kt index 98a38e9ade3..3ba490d870e 100644 --- a/compiler/testData/codegen/box/ieee754/anyToReal.kt +++ b/compiler/testData/codegen/box/ieee754/anyToReal.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun box(): String { val plusZero: Any = 0.0 val minusZero: Any = -0.0 diff --git a/compiler/testData/codegen/box/ieee754/comparableToTWithT_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/comparableToTWithT_properIeeeComparisons.kt index 825ba20ccea..6e2e9f77d2e 100644 --- a/compiler/testData/codegen/box/ieee754/comparableToTWithT_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/comparableToTWithT_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun less(x: Comparable, y: Float) = x is Float && x < y fun less(x: Comparable, y: Double) = x is Double && x < y diff --git a/compiler/testData/codegen/box/ieee754/equalsDouble_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/equalsDouble_properIeeeComparisons.kt index cfa45ee3392..7c9b369ca24 100644 --- a/compiler/testData/codegen/box/ieee754/equalsDouble_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/equalsDouble_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun equals1(a: Double, b: Double) = a == b diff --git a/compiler/testData/codegen/box/ieee754/equalsFloat_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/equalsFloat_properIeeeComparisons.kt index 37b50f3977c..7a7589838d3 100644 --- a/compiler/testData/codegen/box/ieee754/equalsFloat_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/equalsFloat_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun equals1(a: Float, b: Float) = a == b diff --git a/compiler/testData/codegen/box/ieee754/equalsNullableDouble_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/equalsNullableDouble_properIeeeComparisons.kt index c2bf6f12b24..3573cfbc43a 100644 --- a/compiler/testData/codegen/box/ieee754/equalsNullableDouble_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/equalsNullableDouble_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun equals1(a: Double, b: Double?) = a == b diff --git a/compiler/testData/codegen/box/ieee754/equalsNullableFloat_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/equalsNullableFloat_properIeeeComparisons.kt index 67c87d6c792..692ba98ad18 100644 --- a/compiler/testData/codegen/box/ieee754/equalsNullableFloat_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/equalsNullableFloat_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun equals1(a: Float, b: Float?) = a == b diff --git a/compiler/testData/codegen/box/ieee754/greaterDouble_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/greaterDouble_properIeeeComparisons.kt index 513f2870189..27740d7c318 100644 --- a/compiler/testData/codegen/box/ieee754/greaterDouble_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/greaterDouble_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun greater1(a: Double, b: Double) = a > b diff --git a/compiler/testData/codegen/box/ieee754/greaterFloat_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/greaterFloat_properIeeeComparisons.kt index dae92d4d6f2..baa388c59bf 100644 --- a/compiler/testData/codegen/box/ieee754/greaterFloat_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/greaterFloat_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun greater1(a: Float, b: Float) = a > b diff --git a/compiler/testData/codegen/box/ieee754/lessDouble_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/lessDouble_properIeeeComparisons.kt index d91de0e12dc..c12061d393b 100644 --- a/compiler/testData/codegen/box/ieee754/lessDouble_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/lessDouble_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun less1(a: Double, b: Double) = a < b diff --git a/compiler/testData/codegen/box/ieee754/lessFloat_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/lessFloat_properIeeeComparisons.kt index 31c9c440fcb..03307553086 100644 --- a/compiler/testData/codegen/box/ieee754/lessFloat_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/lessFloat_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun less1(a: Float, b: Float) = a < b diff --git a/compiler/testData/codegen/box/ieee754/nullableAnyToReal.kt b/compiler/testData/codegen/box/ieee754/nullableAnyToReal.kt index e2dc9d23cb3..7c4a950202f 100644 --- a/compiler/testData/codegen/box/ieee754/nullableAnyToReal.kt +++ b/compiler/testData/codegen/box/ieee754/nullableAnyToReal.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun box(): String { val plusZero: Any? = 0.0 val minusZero: Any? = -0.0 diff --git a/compiler/testData/codegen/box/ieee754/when10_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/when10_properIeeeComparisons.kt index 5758f7cdb57..dd3ec4586ba 100644 --- a/compiler/testData/codegen/box/ieee754/when10_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/when10_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun box(): String { val plusZero: Any = 0.0 diff --git a/compiler/testData/codegen/box/ieee754/whenNoSubject_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/whenNoSubject_properIeeeComparisons.kt index 26302573a7b..2dc15da6894 100644 --- a/compiler/testData/codegen/box/ieee754/whenNoSubject_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/whenNoSubject_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun box(): String { val plusZero: Any = 0.0 diff --git a/compiler/testData/codegen/box/ieee754/whenNullableSmartCast.kt b/compiler/testData/codegen/box/ieee754/whenNullableSmartCast.kt index af0e7ccc7ee..31dcd7c4417 100644 --- a/compiler/testData/codegen/box/ieee754/whenNullableSmartCast.kt +++ b/compiler/testData/codegen/box/ieee754/whenNullableSmartCast.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun box(): String { val nullValue: Any? = null val nullDouble: Double? = null diff --git a/compiler/testData/codegen/box/ieee754/whenNullableSmartCast10.kt b/compiler/testData/codegen/box/ieee754/whenNullableSmartCast10.kt index 6d745506713..f497a7468b6 100644 --- a/compiler/testData/codegen/box/ieee754/whenNullableSmartCast10.kt +++ b/compiler/testData/codegen/box/ieee754/whenNullableSmartCast10.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // LANGUAGE_VERSION: 1.0 fun box(): String { val nullValue: Any? = null diff --git a/compiler/testData/codegen/box/ieee754/when_properIeeeComparisons.kt b/compiler/testData/codegen/box/ieee754/when_properIeeeComparisons.kt index 5758f7cdb57..dd3ec4586ba 100644 --- a/compiler/testData/codegen/box/ieee754/when_properIeeeComparisons.kt +++ b/compiler/testData/codegen/box/ieee754/when_properIeeeComparisons.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +ProperIeee754Comparisons -// IGNORE_BACKEND: JS_IR fun box(): String { val plusZero: Any = 0.0 diff --git a/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt b/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt index 0035bd676d0..deb8df65d80 100644 --- a/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt +++ b/compiler/testData/codegen/box/increment/postfixIncrementOnClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface Base class Derived: Base class Another: Base diff --git a/compiler/testData/codegen/box/increment/postfixIncrementOnClassSmartCast.kt b/compiler/testData/codegen/box/increment/postfixIncrementOnClassSmartCast.kt index b199a5da6f6..3bc2442a3be 100644 --- a/compiler/testData/codegen/box/increment/postfixIncrementOnClassSmartCast.kt +++ b/compiler/testData/codegen/box/increment/postfixIncrementOnClassSmartCast.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class Base class Derived: Base() operator fun Derived.inc(): Derived { return Derived() } diff --git a/compiler/testData/codegen/box/increment/postfixNullableClassIncrement.kt b/compiler/testData/codegen/box/increment/postfixNullableClassIncrement.kt index 5575a5ca484..b6d22b07a1b 100644 --- a/compiler/testData/codegen/box/increment/postfixNullableClassIncrement.kt +++ b/compiler/testData/codegen/box/increment/postfixNullableClassIncrement.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class MyClass operator fun MyClass?.inc(): MyClass? = null diff --git a/compiler/testData/codegen/box/increment/prefixIncrementOnClass.kt b/compiler/testData/codegen/box/increment/prefixIncrementOnClass.kt index b1bda113a78..6bc75ad060e 100644 --- a/compiler/testData/codegen/box/increment/prefixIncrementOnClass.kt +++ b/compiler/testData/codegen/box/increment/prefixIncrementOnClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface Base class Derived: Base class Another: Base diff --git a/compiler/testData/codegen/box/increment/prefixIncrementOnClassSmartCast.kt b/compiler/testData/codegen/box/increment/prefixIncrementOnClassSmartCast.kt index a27f14b50ef..c51f6d1d816 100644 --- a/compiler/testData/codegen/box/increment/prefixIncrementOnClassSmartCast.kt +++ b/compiler/testData/codegen/box/increment/prefixIncrementOnClassSmartCast.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class Base class Derived: Base() operator fun Derived.inc(): Derived { return Derived() } diff --git a/compiler/testData/codegen/box/inlineClasses/checkCastToInlineClass.kt b/compiler/testData/codegen/box/inlineClasses/checkCastToInlineClass.kt index bfbbc7fcefe..52425992af8 100644 --- a/compiler/testData/codegen/box/inlineClasses/checkCastToInlineClass.kt +++ b/compiler/testData/codegen/box/inlineClasses/checkCastToInlineClass.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND: JS_IR inline class UInt(val s: Int) diff --git a/compiler/testData/codegen/box/inlineClasses/checkUnboxingResultFromTypeVariable.kt b/compiler/testData/codegen/box/inlineClasses/checkUnboxingResultFromTypeVariable.kt index a389d3193e9..355b5ce453e 100644 --- a/compiler/testData/codegen/box/inlineClasses/checkUnboxingResultFromTypeVariable.kt +++ b/compiler/testData/codegen/box/inlineClasses/checkUnboxingResultFromTypeVariable.kt @@ -1,5 +1,4 @@ // !LANGUAGE: +InlineClasses -// IGNORE_BACKEND: JS_IR inline class Result(val a: Any?) { fun typed(): T = a as T diff --git a/compiler/testData/codegen/box/labels/labeledDeclarations.kt b/compiler/testData/codegen/box/labels/labeledDeclarations.kt index ab84a275af5..5b407c979fb 100644 --- a/compiler/testData/codegen/box/labels/labeledDeclarations.kt +++ b/compiler/testData/codegen/box/labels/labeledDeclarations.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class A(val a: Int, val b: Int) fun box() : String diff --git a/compiler/testData/codegen/box/localClasses/kt3389.kt b/compiler/testData/codegen/box/localClasses/kt3389.kt index 60f844e8921..abb515b1688 100644 --- a/compiler/testData/codegen/box/localClasses/kt3389.kt +++ b/compiler/testData/codegen/box/localClasses/kt3389.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR package t class Reproduce { diff --git a/compiler/testData/codegen/box/multiDecl/returnInElvis.kt b/compiler/testData/codegen/box/multiDecl/returnInElvis.kt index 7a9c31be4ad..9f381d75225 100644 --- a/compiler/testData/codegen/box/multiDecl/returnInElvis.kt +++ b/compiler/testData/codegen/box/multiDecl/returnInElvis.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR data class Z(val p: String, val k: String) diff --git a/compiler/testData/codegen/box/nullCheckOptimization/trivialInstanceOf.kt b/compiler/testData/codegen/box/nullCheckOptimization/trivialInstanceOf.kt index 87c725e61d2..89a0f2d67ad 100644 --- a/compiler/testData/codegen/box/nullCheckOptimization/trivialInstanceOf.kt +++ b/compiler/testData/codegen/box/nullCheckOptimization/trivialInstanceOf.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR sealed class A { class B : A() diff --git a/compiler/testData/codegen/box/operatorConventions/annotatedAssignment.kt b/compiler/testData/codegen/box/operatorConventions/annotatedAssignment.kt index 7309d875035..ef6ec161a84 100644 --- a/compiler/testData/codegen/box/operatorConventions/annotatedAssignment.kt +++ b/compiler/testData/codegen/box/operatorConventions/annotatedAssignment.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR @Target(AnnotationTarget.EXPRESSION) annotation class Annotation diff --git a/compiler/testData/codegen/box/primitiveTypes/kt1054.kt b/compiler/testData/codegen/box/primitiveTypes/kt1054.kt index a9754c7efe1..6393e3a0ec0 100644 --- a/compiler/testData/codegen/box/primitiveTypes/kt1054.kt +++ b/compiler/testData/codegen/box/primitiveTypes/kt1054.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun box() : String { return if(true.and(true)) "OK" else "fail" } diff --git a/compiler/testData/codegen/box/primitiveTypes/kt248.kt b/compiler/testData/codegen/box/primitiveTypes/kt248.kt index 744a5c3cdbd..0607b21341f 100644 --- a/compiler/testData/codegen/box/primitiveTypes/kt248.kt +++ b/compiler/testData/codegen/box/primitiveTypes/kt248.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun box() : String { val b = true as? Boolean //exception val i = 1 as Int //exception diff --git a/compiler/testData/codegen/box/primitiveTypes/kt828.kt b/compiler/testData/codegen/box/primitiveTypes/kt828.kt index 06b4e160934..06e63bec23c 100644 --- a/compiler/testData/codegen/box/primitiveTypes/kt828.kt +++ b/compiler/testData/codegen/box/primitiveTypes/kt828.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR package demo fun box() : String { diff --git a/compiler/testData/codegen/box/primitiveTypes/unboxComparable.kt b/compiler/testData/codegen/box/primitiveTypes/unboxComparable.kt index 7026905f989..870989087fd 100644 --- a/compiler/testData/codegen/box/primitiveTypes/unboxComparable.kt +++ b/compiler/testData/codegen/box/primitiveTypes/unboxComparable.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun foo(x: Int) = x fun bar(x: Comparable) = if (x is Int) foo(x) else 0 diff --git a/compiler/testData/codegen/box/properties/kt2892.kt b/compiler/testData/codegen/box/properties/kt2892.kt index dc3b4f99854..816b11009d7 100644 --- a/compiler/testData/codegen/box/properties/kt2892.kt +++ b/compiler/testData/codegen/box/properties/kt2892.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A class B : A() { fun foo() = 1 diff --git a/compiler/testData/codegen/box/properties/twoAnnotatedExtensionPropertiesWithoutBackingFields.kt b/compiler/testData/codegen/box/properties/twoAnnotatedExtensionPropertiesWithoutBackingFields.kt index 22bc68137c5..678b82c784e 100644 --- a/compiler/testData/codegen/box/properties/twoAnnotatedExtensionPropertiesWithoutBackingFields.kt +++ b/compiler/testData/codegen/box/properties/twoAnnotatedExtensionPropertiesWithoutBackingFields.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR annotation class Anno @Anno val Int.foo: Int diff --git a/compiler/testData/codegen/box/reflection/noReflectAtRuntime/propertyGetSetName.kt b/compiler/testData/codegen/box/reflection/noReflectAtRuntime/propertyGetSetName.kt index e6baa155937..f485e0554fe 100644 --- a/compiler/testData/codegen/box/reflection/noReflectAtRuntime/propertyGetSetName.kt +++ b/compiler/testData/codegen/box/reflection/noReflectAtRuntime/propertyGetSetName.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // WITH_RUNTIME import kotlin.reflect.* diff --git a/compiler/testData/codegen/box/regressions/kt10934.kt b/compiler/testData/codegen/box/regressions/kt10934.kt index ba584cd2900..bbc549b99c4 100644 --- a/compiler/testData/codegen/box/regressions/kt10934.kt +++ b/compiler/testData/codegen/box/regressions/kt10934.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR //KT-10934 compiler throws UninferredParameterTypeConstructor in when block that covers all types class Parser(val f: (TInput) -> Result) { diff --git a/compiler/testData/codegen/box/regressions/kt3587.kt b/compiler/testData/codegen/box/regressions/kt3587.kt index 06f96332782..3e1d47b1cd9 100644 --- a/compiler/testData/codegen/box/regressions/kt3587.kt +++ b/compiler/testData/codegen/box/regressions/kt3587.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class Variable { val lightVar: LightVariable = if (this is LightVariable) this else LightVariable() } diff --git a/compiler/testData/codegen/box/regressions/kt4281.kt b/compiler/testData/codegen/box/regressions/kt4281.kt index b78ab5786b0..a1e84ddff49 100644 --- a/compiler/testData/codegen/box/regressions/kt4281.kt +++ b/compiler/testData/codegen/box/regressions/kt4281.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR abstract class C { fun test(x: Int) { if (x == 0) return diff --git a/compiler/testData/codegen/box/sealed/objects.kt b/compiler/testData/codegen/box/sealed/objects.kt index 963aa62bf0d..c33a71d498f 100644 --- a/compiler/testData/codegen/box/sealed/objects.kt +++ b/compiler/testData/codegen/box/sealed/objects.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR sealed class Season { object Warm: Season() object Cold: Season() diff --git a/compiler/testData/codegen/box/sealed/simple.kt b/compiler/testData/codegen/box/sealed/simple.kt index 8550e4a76ae..01ae3af2c95 100644 --- a/compiler/testData/codegen/box/sealed/simple.kt +++ b/compiler/testData/codegen/box/sealed/simple.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR sealed class Season { class Warm: Season() class Cold: Season() diff --git a/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt b/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt index f60150505fd..074508611b6 100644 --- a/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt +++ b/compiler/testData/codegen/box/secondaryConstructors/dataClasses.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR internal data class A1(val prop1: String) { val prop2: String = "const2" var prop3: String = "" diff --git a/compiler/testData/codegen/box/smartCasts/falseSmartCast.kt b/compiler/testData/codegen/box/smartCasts/falseSmartCast.kt index 0f10972ac19..cfdcf7e1e7c 100644 --- a/compiler/testData/codegen/box/smartCasts/falseSmartCast.kt +++ b/compiler/testData/codegen/box/smartCasts/falseSmartCast.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class SuperFoo { public fun bar(): String { if (this is Foo) { diff --git a/compiler/testData/codegen/box/smartCasts/genericIntersection.kt b/compiler/testData/codegen/box/smartCasts/genericIntersection.kt index 394b7f6af23..51c34682f0e 100644 --- a/compiler/testData/codegen/box/smartCasts/genericIntersection.kt +++ b/compiler/testData/codegen/box/smartCasts/genericIntersection.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // See also KT-7801 class A diff --git a/compiler/testData/codegen/box/smartCasts/implicitMemberReceiver.kt b/compiler/testData/codegen/box/smartCasts/implicitMemberReceiver.kt index 98eab68855b..f38fa9fd9b5 100644 --- a/compiler/testData/codegen/box/smartCasts/implicitMemberReceiver.kt +++ b/compiler/testData/codegen/box/smartCasts/implicitMemberReceiver.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A { open val a = "OK" } diff --git a/compiler/testData/codegen/box/smartCasts/implicitReceiver.kt b/compiler/testData/codegen/box/smartCasts/implicitReceiver.kt index c725792ea7b..911f53248c5 100644 --- a/compiler/testData/codegen/box/smartCasts/implicitReceiver.kt +++ b/compiler/testData/codegen/box/smartCasts/implicitReceiver.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A { class B : A() { val a = "FAIL" diff --git a/compiler/testData/codegen/box/smartCasts/implicitReceiverInWhen.kt b/compiler/testData/codegen/box/smartCasts/implicitReceiverInWhen.kt index f178f19c502..ce31ad2d9f3 100644 --- a/compiler/testData/codegen/box/smartCasts/implicitReceiverInWhen.kt +++ b/compiler/testData/codegen/box/smartCasts/implicitReceiverInWhen.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A { fun f(): String = when (this) { diff --git a/compiler/testData/codegen/box/smartCasts/implicitToGrandSon.kt b/compiler/testData/codegen/box/smartCasts/implicitToGrandSon.kt index c8f1d8bb816..588cc9ff24d 100644 --- a/compiler/testData/codegen/box/smartCasts/implicitToGrandSon.kt +++ b/compiler/testData/codegen/box/smartCasts/implicitToGrandSon.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A { open fun foo() = "FAIL" diff --git a/compiler/testData/codegen/box/smartCasts/nullSmartCast.kt b/compiler/testData/codegen/box/smartCasts/nullSmartCast.kt index e7dfcb6f347..1b74cbd9ea3 100644 --- a/compiler/testData/codegen/box/smartCasts/nullSmartCast.kt +++ b/compiler/testData/codegen/box/smartCasts/nullSmartCast.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun String?.foo() = this ?: "OK" fun foo(i: Int?): String { diff --git a/compiler/testData/codegen/box/traits/genericMethod.kt b/compiler/testData/codegen/box/traits/genericMethod.kt index ac781f72c73..e3d47b24181 100644 --- a/compiler/testData/codegen/box/traits/genericMethod.kt +++ b/compiler/testData/codegen/box/traits/genericMethod.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface A { val property : T diff --git a/compiler/testData/codegen/box/traits/multiple.kt b/compiler/testData/codegen/box/traits/multiple.kt index 973b4936813..bc6470c0d6b 100644 --- a/compiler/testData/codegen/box/traits/multiple.kt +++ b/compiler/testData/codegen/box/traits/multiple.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR interface AL { fun get(index: Int) : Any? = null } diff --git a/compiler/testData/codegen/box/typeInfo/implicitSmartCastThis.kt b/compiler/testData/codegen/box/typeInfo/implicitSmartCastThis.kt index 73b8e834dd7..a4587005887 100644 --- a/compiler/testData/codegen/box/typeInfo/implicitSmartCastThis.kt +++ b/compiler/testData/codegen/box/typeInfo/implicitSmartCastThis.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class A class B : A() { diff --git a/compiler/testData/codegen/box/typeInfo/kt2811.kt b/compiler/testData/codegen/box/typeInfo/kt2811.kt index 360c48b0b23..293eb80b20b 100644 --- a/compiler/testData/codegen/box/typeInfo/kt2811.kt +++ b/compiler/testData/codegen/box/typeInfo/kt2811.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR open class Test1 { fun test1(): String { if (this is Test2) { diff --git a/compiler/testData/codegen/box/typeInfo/primitiveTypeInfo.kt b/compiler/testData/codegen/box/typeInfo/primitiveTypeInfo.kt index e77872de173..ff67d156b7d 100644 --- a/compiler/testData/codegen/box/typeInfo/primitiveTypeInfo.kt +++ b/compiler/testData/codegen/box/typeInfo/primitiveTypeInfo.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR class Box(t: T) { var value = t } diff --git a/compiler/testData/codegen/box/typeInfo/smartCastThis.kt b/compiler/testData/codegen/box/typeInfo/smartCastThis.kt index 21e52b4f5e5..6ed06c50328 100644 --- a/compiler/testData/codegen/box/typeInfo/smartCastThis.kt +++ b/compiler/testData/codegen/box/typeInfo/smartCastThis.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR package h open class A { diff --git a/compiler/testData/codegen/box/typeMapping/kt3976.kt b/compiler/testData/codegen/box/typeMapping/kt3976.kt index f143805fc10..47110878e72 100644 --- a/compiler/testData/codegen/box/typeMapping/kt3976.kt +++ b/compiler/testData/codegen/box/typeMapping/kt3976.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR import kotlin.reflect.KProperty // java.lang.ClassNotFoundException: kotlin.Nothing diff --git a/compiler/testData/codegen/box/when/exhaustiveBoolean.kt b/compiler/testData/codegen/box/when/exhaustiveBoolean.kt index 89fd2499e8f..4ac2633da11 100644 --- a/compiler/testData/codegen/box/when/exhaustiveBoolean.kt +++ b/compiler/testData/codegen/box/when/exhaustiveBoolean.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun box() : String = when (true) { ((true)) -> "OK" (1 == 2) -> "Not ok" diff --git a/compiler/testData/codegen/box/when/sealedWhenInitialization.kt b/compiler/testData/codegen/box/when/sealedWhenInitialization.kt index d229651d474..5f9db0bde7d 100644 --- a/compiler/testData/codegen/box/when/sealedWhenInitialization.kt +++ b/compiler/testData/codegen/box/when/sealedWhenInitialization.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR sealed class A { object B : A() diff --git a/compiler/testData/codegen/box/when/typeDisjunction.kt b/compiler/testData/codegen/box/when/typeDisjunction.kt index 8abbe46bc06..1d2910393b0 100644 --- a/compiler/testData/codegen/box/when/typeDisjunction.kt +++ b/compiler/testData/codegen/box/when/typeDisjunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR fun foo(s: Any): String { val x = when (s) { is String -> s diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java index 38232c7e1bc..7ce256f063a 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java @@ -3017,6 +3017,39 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { } } + @TestMetadata("js/js.translator/testData/box/expression/typeCheck") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class TypeCheck extends AbstractBoxJsTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS, testDataFilePath); + } + + public void testAllFilesPresentInTypeCheck() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("js/js.translator/testData/box/expression/typeCheck"), Pattern.compile("^([^_](.+))\\.kt$"), TargetBackend.JS, true); + } + + @TestMetadata("simpleAsClass.kt") + public void testSimpleAsClass() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleAsClass.kt"); + } + + @TestMetadata("simpleAsInterface.kt") + public void testSimpleAsInterface() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleAsInterface.kt"); + } + + @TestMetadata("simpleIsClass.kt") + public void testSimpleIsClass() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleIsClass.kt"); + } + + @TestMetadata("simpleIsInterface.kt") + public void testSimpleIsInterface() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt"); + } + } + @TestMetadata("js/js.translator/testData/box/expression/when") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -6985,6 +7018,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { runTest("js/js.translator/testData/box/rtti/isComparable.kt"); } + @TestMetadata("isJsPrimitiveNullableType.kt") + public void testIsJsPrimitiveNullableType() throws Exception { + runTest("js/js.translator/testData/box/rtti/isJsPrimitiveNullableType.kt"); + } + @TestMetadata("isJsPrimitiveType.kt") public void testIsJsPrimitiveType() throws Exception { runTest("js/js.translator/testData/box/rtti/isJsPrimitiveType.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java index f3a7ac74069..410c6262e30 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrBoxJsTestGenerated.java @@ -3017,6 +3017,39 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { } } + @TestMetadata("js/js.translator/testData/box/expression/typeCheck") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class TypeCheck extends AbstractIrBoxJsTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest0(this::doTest, TargetBackend.JS_IR, testDataFilePath); + } + + public void testAllFilesPresentInTypeCheck() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("js/js.translator/testData/box/expression/typeCheck"), Pattern.compile("^([^_](.+))\\.kt$"), TargetBackend.JS_IR, true); + } + + @TestMetadata("simpleAsClass.kt") + public void testSimpleAsClass() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleAsClass.kt"); + } + + @TestMetadata("simpleAsInterface.kt") + public void testSimpleAsInterface() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleAsInterface.kt"); + } + + @TestMetadata("simpleIsClass.kt") + public void testSimpleIsClass() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleIsClass.kt"); + } + + @TestMetadata("simpleIsInterface.kt") + public void testSimpleIsInterface() throws Exception { + runTest("js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt"); + } + } + @TestMetadata("js/js.translator/testData/box/expression/when") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) @@ -6985,6 +7018,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { runTest("js/js.translator/testData/box/rtti/isComparable.kt"); } + @TestMetadata("isJsPrimitiveNullableType.kt") + public void testIsJsPrimitiveNullableType() throws Exception { + runTest("js/js.translator/testData/box/rtti/isJsPrimitiveNullableType.kt"); + } + @TestMetadata("isJsPrimitiveType.kt") public void testIsJsPrimitiveType() throws Exception { runTest("js/js.translator/testData/box/rtti/isJsPrimitiveType.kt"); diff --git a/js/js.translator/testData/box/annotation/annotationClass.kt b/js/js.translator/testData/box/annotation/annotationClass.kt index 30651789c69..f3ee2c3952d 100644 --- a/js/js.translator/testData/box/annotation/annotationClass.kt +++ b/js/js.translator/testData/box/annotation/annotationClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1108 package foo diff --git a/js/js.translator/testData/box/callableReference/property/simpleMutableMember.kt b/js/js.translator/testData/box/callableReference/property/simpleMutableMember.kt index 646f7d6f5a2..a31bb016227 100644 --- a/js/js.translator/testData/box/callableReference/property/simpleMutableMember.kt +++ b/js/js.translator/testData/box/callableReference/property/simpleMutableMember.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1120 // This test was adapted from compiler/testData/codegen/box/callableReference/property/. package foo diff --git a/js/js.translator/testData/box/dataClass/components.kt b/js/js.translator/testData/box/dataClass/components.kt index 8494a2a493c..10ed4dada5e 100644 --- a/js/js.translator/testData/box/dataClass/components.kt +++ b/js/js.translator/testData/box/dataClass/components.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1123 package foo diff --git a/js/js.translator/testData/box/dataClass/tostring.kt b/js/js.translator/testData/box/dataClass/tostring.kt index da6fba643ae..39dd962ace0 100644 --- a/js/js.translator/testData/box/dataClass/tostring.kt +++ b/js/js.translator/testData/box/dataClass/tostring.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1131 package foo diff --git a/js/js.translator/testData/box/delegation/complexDelegation.kt b/js/js.translator/testData/box/delegation/complexDelegation.kt index ad265bbf66e..b2767c3b34d 100644 --- a/js/js.translator/testData/box/delegation/complexDelegation.kt +++ b/js/js.translator/testData/box/delegation/complexDelegation.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1127 package foo diff --git a/js/js.translator/testData/box/delegation/delegation3.kt b/js/js.translator/testData/box/delegation/delegation3.kt index f6e7e73e854..32688b8e824 100644 --- a/js/js.translator/testData/box/delegation/delegation3.kt +++ b/js/js.translator/testData/box/delegation/delegation3.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1132 // This test was adapted from compiler/testData/codegen/box/classes package foo diff --git a/js/js.translator/testData/box/delegation/delegation4.kt b/js/js.translator/testData/box/delegation/delegation4.kt index fb68f469c61..9b994766b9a 100644 --- a/js/js.translator/testData/box/delegation/delegation4.kt +++ b/js/js.translator/testData/box/delegation/delegation4.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1129 // This test was adapted from compiler/testData/codegen/box/classes package foo diff --git a/js/js.translator/testData/box/dynamic/is.kt b/js/js.translator/testData/box/dynamic/is.kt index e5cf7d69484..1d16b957af1 100644 --- a/js/js.translator/testData/box/dynamic/is.kt +++ b/js/js.translator/testData/box/dynamic/is.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1126 // FILE: is.kt package foo diff --git a/js/js.translator/testData/box/examples/classObject.kt b/js/js.translator/testData/box/examples/classObject.kt index 470b930f72e..45f6ac36705 100644 --- a/js/js.translator/testData/box/examples/classObject.kt +++ b/js/js.translator/testData/box/examples/classObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1116 class C() { companion object { diff --git a/js/js.translator/testData/box/expression/identityEquals/identityEqualsMethodForPrimitives.kt b/js/js.translator/testData/box/expression/identityEquals/identityEqualsMethodForPrimitives.kt index ba537816ff0..8966204ce90 100644 --- a/js/js.translator/testData/box/expression/identityEquals/identityEqualsMethodForPrimitives.kt +++ b/js/js.translator/testData/box/expression/identityEquals/identityEqualsMethodForPrimitives.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1108 package foo diff --git a/js/js.translator/testData/box/expression/if/ifInsideLambda.kt b/js/js.translator/testData/box/expression/if/ifInsideLambda.kt index 500cc09b09d..1270a443575 100644 --- a/js/js.translator/testData/box/expression/if/ifInsideLambda.kt +++ b/js/js.translator/testData/box/expression/if/ifInsideLambda.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1108 // http://youtrack.jetbrains.com/issue/KT-5594 // JS: compiler crashes diff --git a/js/js.translator/testData/box/expression/misc/KT-1052-2.kt b/js/js.translator/testData/box/expression/misc/KT-1052-2.kt index fbb102bdfe9..0119b322d63 100644 --- a/js/js.translator/testData/box/expression/misc/KT-1052-2.kt +++ b/js/js.translator/testData/box/expression/misc/KT-1052-2.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1108 package foo diff --git a/js/js.translator/testData/box/expression/misc/localVarAsFunction.kt b/js/js.translator/testData/box/expression/misc/localVarAsFunction.kt index 6c49b07e85d..69bfaab0808 100644 --- a/js/js.translator/testData/box/expression/misc/localVarAsFunction.kt +++ b/js/js.translator/testData/box/expression/misc/localVarAsFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1111 package foo diff --git a/js/js.translator/testData/box/expression/misc/rightAssocForGeneratedConditionalOperator.kt b/js/js.translator/testData/box/expression/misc/rightAssocForGeneratedConditionalOperator.kt index ab83a84351f..ac4e5ddee5e 100644 --- a/js/js.translator/testData/box/expression/misc/rightAssocForGeneratedConditionalOperator.kt +++ b/js/js.translator/testData/box/expression/misc/rightAssocForGeneratedConditionalOperator.kt @@ -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 diff --git a/js/js.translator/testData/box/expression/typeCheck/simpleAsClass.kt b/js/js.translator/testData/box/expression/typeCheck/simpleAsClass.kt new file mode 100644 index 00000000000..d352e8355f9 --- /dev/null +++ b/js/js.translator/testData/box/expression/typeCheck/simpleAsClass.kt @@ -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" +} \ No newline at end of file diff --git a/js/js.translator/testData/box/expression/typeCheck/simpleAsInterface.kt b/js/js.translator/testData/box/expression/typeCheck/simpleAsInterface.kt new file mode 100644 index 00000000000..ac0a2458ba9 --- /dev/null +++ b/js/js.translator/testData/box/expression/typeCheck/simpleAsInterface.kt @@ -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" +} \ No newline at end of file diff --git a/js/js.translator/testData/box/expression/typeCheck/simpleIsClass.kt b/js/js.translator/testData/box/expression/typeCheck/simpleIsClass.kt new file mode 100644 index 00000000000..0cd6b306e11 --- /dev/null +++ b/js/js.translator/testData/box/expression/typeCheck/simpleIsClass.kt @@ -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" +} \ No newline at end of file diff --git a/js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt b/js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt new file mode 100644 index 00000000000..5f5d5a65c11 --- /dev/null +++ b/js/js.translator/testData/box/expression/typeCheck/simpleIsInterface.kt @@ -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" +} \ No newline at end of file diff --git a/js/js.translator/testData/box/expression/when/matchNullableType.kt b/js/js.translator/testData/box/expression/when/matchNullableType.kt index 719932c1d37..3faf5676cd1 100644 --- a/js/js.translator/testData/box/expression/when/matchNullableType.kt +++ b/js/js.translator/testData/box/expression/when/matchNullableType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1110 package foo diff --git a/js/js.translator/testData/box/expression/when/whenConditionWithReturn.kt b/js/js.translator/testData/box/expression/when/whenConditionWithReturn.kt index fd3600f63ce..294f4141f9f 100644 --- a/js/js.translator/testData/box/expression/when/whenConditionWithReturn.kt +++ b/js/js.translator/testData/box/expression/when/whenConditionWithReturn.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1115 package foo diff --git a/js/js.translator/testData/box/expression/when/whenExecutesOnlyOnce.kt b/js/js.translator/testData/box/expression/when/whenExecutesOnlyOnce.kt index d7d2c4f5594..a54cec2c82a 100644 --- a/js/js.translator/testData/box/expression/when/whenExecutesOnlyOnce.kt +++ b/js/js.translator/testData/box/expression/when/whenExecutesOnlyOnce.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1110 package foo diff --git a/js/js.translator/testData/box/expression/when/whenType.kt b/js/js.translator/testData/box/expression/when/whenType.kt index 1b107f5ce72..3af511e88e7 100644 --- a/js/js.translator/testData/box/expression/when/whenType.kt +++ b/js/js.translator/testData/box/expression/when/whenType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1110 package foo diff --git a/js/js.translator/testData/box/expression/when/whenValueOrType.kt b/js/js.translator/testData/box/expression/when/whenValueOrType.kt index 80e8afbfd15..1737170be0a 100644 --- a/js/js.translator/testData/box/expression/when/whenValueOrType.kt +++ b/js/js.translator/testData/box/expression/when/whenValueOrType.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1112 package foo diff --git a/js/js.translator/testData/box/inline/incrementProperty.kt b/js/js.translator/testData/box/inline/incrementProperty.kt index 386c6cc6e4a..26643166d0d 100644 --- a/js/js.translator/testData/box/inline/incrementProperty.kt +++ b/js/js.translator/testData/box/inline/incrementProperty.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1115 package foo diff --git a/js/js.translator/testData/box/inline/jsCode.kt b/js/js.translator/testData/box/inline/jsCode.kt index bbfff47e836..750893fcc2b 100644 --- a/js/js.translator/testData/box/inline/jsCode.kt +++ b/js/js.translator/testData/box/inline/jsCode.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1115 package foo diff --git a/js/js.translator/testData/box/jsCode/break.kt b/js/js.translator/testData/box/jsCode/break.kt index 4f10df93007..e23fee9b9da 100644 --- a/js/js.translator/testData/box/jsCode/break.kt +++ b/js/js.translator/testData/box/jsCode/break.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1112 package foo diff --git a/js/js.translator/testData/box/jsCode/continue.kt b/js/js.translator/testData/box/jsCode/continue.kt index 75c68bb9e02..f163112f1da 100644 --- a/js/js.translator/testData/box/jsCode/continue.kt +++ b/js/js.translator/testData/box/jsCode/continue.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1112 package foo diff --git a/js/js.translator/testData/box/jsCode/doWhile.kt b/js/js.translator/testData/box/jsCode/doWhile.kt index 4c0c76881b7..8d968cb1c3a 100644 --- a/js/js.translator/testData/box/jsCode/doWhile.kt +++ b/js/js.translator/testData/box/jsCode/doWhile.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1113 package foo diff --git a/js/js.translator/testData/box/jsCode/for.kt b/js/js.translator/testData/box/jsCode/for.kt index fbed153a841..361149d5f96 100644 --- a/js/js.translator/testData/box/jsCode/for.kt +++ b/js/js.translator/testData/box/jsCode/for.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1113 package foo diff --git a/js/js.translator/testData/box/jsCode/function.kt b/js/js.translator/testData/box/jsCode/function.kt index 2a91e7296d6..e397f044c5a 100644 --- a/js/js.translator/testData/box/jsCode/function.kt +++ b/js/js.translator/testData/box/jsCode/function.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1114 package foo diff --git a/js/js.translator/testData/box/jsCode/if.kt b/js/js.translator/testData/box/jsCode/if.kt index 1d61a4fb9c8..7f11f515dda 100644 --- a/js/js.translator/testData/box/jsCode/if.kt +++ b/js/js.translator/testData/box/jsCode/if.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1113 package foo diff --git a/js/js.translator/testData/box/jsCode/label.kt b/js/js.translator/testData/box/jsCode/label.kt index 3c2c0c6c899..21205f7e00a 100644 --- a/js/js.translator/testData/box/jsCode/label.kt +++ b/js/js.translator/testData/box/jsCode/label.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1115 package foo diff --git a/js/js.translator/testData/box/jsCode/labelSiblingClash.kt b/js/js.translator/testData/box/jsCode/labelSiblingClash.kt index 44421e85a4d..1c6255fdd7b 100644 --- a/js/js.translator/testData/box/jsCode/labelSiblingClash.kt +++ b/js/js.translator/testData/box/jsCode/labelSiblingClash.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1112 package foo diff --git a/js/js.translator/testData/box/jsCode/quotes.kt b/js/js.translator/testData/box/jsCode/quotes.kt index e7ab3d8762a..ede16688607 100644 --- a/js/js.translator/testData/box/jsCode/quotes.kt +++ b/js/js.translator/testData/box/jsCode/quotes.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1115 package foo diff --git a/js/js.translator/testData/box/jsCode/switch.kt b/js/js.translator/testData/box/jsCode/switch.kt index 943e2b404c9..75a650cce88 100644 --- a/js/js.translator/testData/box/jsCode/switch.kt +++ b/js/js.translator/testData/box/jsCode/switch.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1113 package foo diff --git a/js/js.translator/testData/box/jsCode/while.kt b/js/js.translator/testData/box/jsCode/while.kt index e955e71909d..ec92f500e57 100644 --- a/js/js.translator/testData/box/jsCode/while.kt +++ b/js/js.translator/testData/box/jsCode/while.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1113 package foo diff --git a/js/js.translator/testData/box/native/castToNullableNativeInterface.kt b/js/js.translator/testData/box/native/castToNullableNativeInterface.kt index 17de440ca12..56bf5026501 100644 --- a/js/js.translator/testData/box/native/castToNullableNativeInterface.kt +++ b/js/js.translator/testData/box/native/castToNullableNativeInterface.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1109 external interface I { fun foo(): String diff --git a/js/js.translator/testData/box/native/safeCastToNativeInterface.kt b/js/js.translator/testData/box/native/safeCastToNativeInterface.kt index a2dbf7476ab..d91dd26c93e 100644 --- a/js/js.translator/testData/box/native/safeCastToNativeInterface.kt +++ b/js/js.translator/testData/box/native/safeCastToNativeInterface.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1109 external interface I { fun foo(): String diff --git a/js/js.translator/testData/box/objectDeclaration/objectDeclaration.kt b/js/js.translator/testData/box/objectDeclaration/objectDeclaration.kt index 51f30dc2eeb..a2bf9346d02 100644 --- a/js/js.translator/testData/box/objectDeclaration/objectDeclaration.kt +++ b/js/js.translator/testData/box/objectDeclaration/objectDeclaration.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1119 package foo diff --git a/js/js.translator/testData/box/operatorOverloading/overloadPlusAssignViaPlusExtensionFunction.kt b/js/js.translator/testData/box/operatorOverloading/overloadPlusAssignViaPlusExtensionFunction.kt index 03e6420435a..2ca255dbed4 100644 --- a/js/js.translator/testData/box/operatorOverloading/overloadPlusAssignViaPlusExtensionFunction.kt +++ b/js/js.translator/testData/box/operatorOverloading/overloadPlusAssignViaPlusExtensionFunction.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1120 package foo diff --git a/js/js.translator/testData/box/rtti/isJsPrimitiveNullableType.kt b/js/js.translator/testData/box/rtti/isJsPrimitiveNullableType.kt new file mode 100644 index 00000000000..760e3a482c3 --- /dev/null +++ b/js/js.translator/testData/box/rtti/isJsPrimitiveNullableType.kt @@ -0,0 +1,40 @@ +// EXPECTED_REACHABLE_NODES: 1148 +package foo + +val NUMBER = 1 +val STRING = 2 +val BOOLEAN = 3 +val OBJECT = 4 +val FUNCTION = 5 + +fun testNullable(a: Any?, actualType: Int) { + assertEquals(a == null || actualType == NUMBER, a is Int?, "$a is Int?") + assertEquals(a == null || actualType == NUMBER, a is Number?, "$a is Number?") + assertEquals(a == null || actualType == NUMBER, a is Double?, "$a is Double?") + assertEquals(a == null || actualType == BOOLEAN, a is Boolean?, "$a is Boolean?") + assertEquals(a == null || actualType == STRING, a is String?, "$a is String?") + assertEquals(a == null || actualType == FUNCTION, a is Function0<*>?, "$a is Function?") +} + +fun box(): String { + testNullable(1, NUMBER) + + testNullable(12.3, NUMBER) + testNullable(12.3f, NUMBER) + + testNullable("text", STRING) + + testNullable(true, BOOLEAN) + testNullable(false, BOOLEAN) + + testNullable(object {}, OBJECT) + testNullable({}, FUNCTION) + + testNullable(null, NUMBER) + testNullable(null, STRING) + testNullable(null, BOOLEAN) + testNullable(null, OBJECT) + testNullable(null, FUNCTION) + + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/box/rtti/isJsPrimitiveType.kt b/js/js.translator/testData/box/rtti/isJsPrimitiveType.kt index 737447a9452..9b012bca491 100644 --- a/js/js.translator/testData/box/rtti/isJsPrimitiveType.kt +++ b/js/js.translator/testData/box/rtti/isJsPrimitiveType.kt @@ -1,34 +1,35 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1148 package foo -enum class Type { - NUMBER, - STRING, - BOOLEAN, - OBJECT -} +val NUMBER = 1 +val STRING = 2 +val BOOLEAN = 3 +val OBJECT = 4 +val FUNCTION = 5 -fun test(a: Any, actualType: Type) { - assertEquals(actualType == Type.NUMBER, a is Int, "$a is Int") - assertEquals(actualType == Type.NUMBER, a is Number, "$a is Number") - assertEquals(actualType == Type.NUMBER, a is Double, "$a is Double") - assertEquals(actualType == Type.BOOLEAN, a is Boolean, "$a is Boolean") - assertEquals(actualType == Type.STRING, a is String, "$a is String") +fun test(a: Any, actualType: Int) { + assertEquals(actualType == NUMBER, a is Int, "$a is Int") + assertEquals(actualType == NUMBER, a is Number, "$a is Number") + assertEquals(actualType == NUMBER, a is Double, "$a is Double") + assertEquals(actualType == BOOLEAN, a is Boolean, "$a is Boolean") + assertEquals(actualType == STRING, a is String, "$a is String") + assertEquals(actualType == FUNCTION, a is Function0<*>, "$a is Function") } fun box(): String { - test(1, Type.NUMBER) + test(1, NUMBER) - test(12.3, Type.NUMBER) - test(12.3f, Type.NUMBER) + test(12.3, NUMBER) + test(12.3f, NUMBER) - test("text", Type.STRING) + test("text", STRING) - test(true, Type.BOOLEAN) - test(false, Type.BOOLEAN) + test(true, BOOLEAN) + test(false, BOOLEAN) - test(object {}, Type.OBJECT) + test(object {}, OBJECT) + + test({}, FUNCTION) return "OK" } \ No newline at end of file diff --git a/js/js.translator/testData/box/rtti/isObject.kt b/js/js.translator/testData/box/rtti/isObject.kt index e0a9923e322..833846b3c99 100644 --- a/js/js.translator/testData/box/rtti/isObject.kt +++ b/js/js.translator/testData/box/rtti/isObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1112 package foo diff --git a/js/js.translator/testData/box/rtti/isSameClass.kt b/js/js.translator/testData/box/rtti/isSameClass.kt index a0cd61cb9c6..4c613cf8e25 100644 --- a/js/js.translator/testData/box/rtti/isSameClass.kt +++ b/js/js.translator/testData/box/rtti/isSameClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1114 package foo diff --git a/js/js.translator/testData/box/rtti/notIsOtherClass.kt b/js/js.translator/testData/box/rtti/notIsOtherClass.kt index 1d30ff91fae..00c7570609a 100644 --- a/js/js.translator/testData/box/rtti/notIsOtherClass.kt +++ b/js/js.translator/testData/box/rtti/notIsOtherClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1121 package foo diff --git a/js/js.translator/testData/box/rtti/objectExpression.kt b/js/js.translator/testData/box/rtti/objectExpression.kt index 0fa962a4bac..2bf3c34a32d 100644 --- a/js/js.translator/testData/box/rtti/objectExpression.kt +++ b/js/js.translator/testData/box/rtti/objectExpression.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1176 package foo diff --git a/js/js.translator/testData/box/rtti/onNativeObject.kt b/js/js.translator/testData/box/rtti/onNativeObject.kt index 45c3442ce52..ea617b8f0e4 100644 --- a/js/js.translator/testData/box/rtti/onNativeObject.kt +++ b/js/js.translator/testData/box/rtti/onNativeObject.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1112 package foo diff --git a/js/js.translator/testData/box/rtti/rttiForClass.kt b/js/js.translator/testData/box/rtti/rttiForClass.kt index 0309728b5cb..675be9bb2c9 100644 --- a/js/js.translator/testData/box/rtti/rttiForClass.kt +++ b/js/js.translator/testData/box/rtti/rttiForClass.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1124 package foo diff --git a/js/js.translator/testData/box/rtti/rttiForTrait.kt b/js/js.translator/testData/box/rtti/rttiForTrait.kt index b7dd41f1fd3..9ec106a7315 100644 --- a/js/js.translator/testData/box/rtti/rttiForTrait.kt +++ b/js/js.translator/testData/box/rtti/rttiForTrait.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1121 package foo diff --git a/js/js.translator/testData/box/rtti/rttiForTrait2.kt b/js/js.translator/testData/box/rtti/rttiForTrait2.kt index 766bab7c8eb..750ef21c188 100644 --- a/js/js.translator/testData/box/rtti/rttiForTrait2.kt +++ b/js/js.translator/testData/box/rtti/rttiForTrait2.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1132 package foo diff --git a/js/js.translator/testData/box/rtti/sideEffectMethod.kt b/js/js.translator/testData/box/rtti/sideEffectMethod.kt index d74ffadeddb..77b28ce6826 100644 --- a/js/js.translator/testData/box/rtti/sideEffectMethod.kt +++ b/js/js.translator/testData/box/rtti/sideEffectMethod.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1117 package foo diff --git a/js/js.translator/testData/box/rtti/sideEffectProperty.kt b/js/js.translator/testData/box/rtti/sideEffectProperty.kt index 2a50464ae0d..0c1dd0e37a2 100644 --- a/js/js.translator/testData/box/rtti/sideEffectProperty.kt +++ b/js/js.translator/testData/box/rtti/sideEffectProperty.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1117 package foo diff --git a/js/js.translator/testData/box/rtti/subclassOfNativeIsInterface.kt b/js/js.translator/testData/box/rtti/subclassOfNativeIsInterface.kt index 0d7f88b65b1..6cdcdf00cfc 100644 --- a/js/js.translator/testData/box/rtti/subclassOfNativeIsInterface.kt +++ b/js/js.translator/testData/box/rtti/subclassOfNativeIsInterface.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND: JS_IR // EXPECTED_REACHABLE_NODES: 1127 external open class A