diff --git a/compiler/testData/codegen/box/casts/isNullablePrimitive.kt b/compiler/testData/codegen/box/casts/isNullablePrimitive.kt new file mode 100644 index 00000000000..6a820551736 --- /dev/null +++ b/compiler/testData/codegen/box/casts/isNullablePrimitive.kt @@ -0,0 +1,48 @@ +fun box(): String { + val n: Any? = null + + val intV: Any? = 23 + val floatV: Any? = 23.4F + val doubleV: Any? = 23.45 + val longV: Any? = 234L + val stringV: Any? = "foo" + val booleanV: Any? = true + val functionV: Any? = { x: Int -> x + 1 } + + if (n !is Int?) return "fail: null !is Int?" + if (n !is Float?) return "fail: null !is Float?" + if (n !is Double?) return "fail: null !is Double?" + if (n !is String?) return "fail: null !is String?" + if (n !is Boolean?) return "fail: null !is Boolean?" + if (n !is Function1<*, *>?) return "fail: null !is Function?" + + if (n is Int) return "fail: null is Int" + if (n is Float) return "fail: null is Float" + if (n is Double) return "fail: null is Double" + if (n is String) return "fail: null is String" + if (n is Boolean) return "fail: null is Boolean" + if (n is Function1<*, *>) return "fail: null is Function" + + if (intV !is Int?) return "fail: 23 !is Int?" + if (intV is String?) return "fail: 23 is String?" + + if (floatV !is Float?) return "fail: 23.4F !is Float?" + if (floatV is String?) return "fail: 23.4F is String?" + + if (doubleV !is Double?) return "fail: 23.45 !is Double?" + if (doubleV is String?) return "fail: 23.45 is String?" + + if (longV !is Long?) return "fail: 234L !is Long?" + if (longV is String?) return "fail: 234L is String?" + + if (stringV !is String?) return "fail: 'foo' !is String?" + if (stringV is Double?) return "fail: 'foo' is Double?" + + if (booleanV !is Boolean?) return "fail: true !is Boolean?" + if (booleanV is Double?) return "fail: true is Double?" + + if (functionV !is Function1<*, *>?) return "fail: !is Function?" + if (functionV is String?) return "fail: is String?" + + return "OK" +} \ No newline at end of file diff --git a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index bb61108aac8..0607d17ad88 100644 --- a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -2537,6 +2537,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes doTest(fileName); } + @TestMetadata("isNullablePrimitive.kt") + public void testIsNullablePrimitive() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/isNullablePrimitive.kt"); + doTest(fileName); + } + @TestMetadata("lambdaToUnitCast.kt") public void testLambdaToUnitCast() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 5b0faa83bc2..70dbdb452b6 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -2537,6 +2537,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("isNullablePrimitive.kt") + public void testIsNullablePrimitive() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/isNullablePrimitive.kt"); + doTest(fileName); + } + @TestMetadata("lambdaToUnitCast.kt") public void testLambdaToUnitCast() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index dd3ec546002..fdbc08cca65 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -2537,6 +2537,12 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes doTest(fileName); } + @TestMetadata("isNullablePrimitive.kt") + public void testIsNullablePrimitive() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/isNullablePrimitive.kt"); + doTest(fileName); + } + @TestMetadata("lambdaToUnitCast.kt") public void testLambdaToUnitCast() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 41799b47748..a71dd67d870 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -2957,6 +2957,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { throw new AssertionError("Looks like this test can be unmuted. Remove IGNORE_BACKEND directive for that."); } + @TestMetadata("isNullablePrimitive.kt") + public void testIsNullablePrimitive() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/isNullablePrimitive.kt"); + doTest(fileName); + } + @TestMetadata("lambdaToUnitCast.kt") public void testLambdaToUnitCast() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/casts/lambdaToUnitCast.kt");