From 88191e8b1ad553a11e3e584e6660be5a1951a830 Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Mon, 17 Jul 2023 13:57:20 +0200 Subject: [PATCH] [IR] Add new test to check that nullable access to enum is not evaluated Just a safety check. If an expression like `EnumClass.Value?.name` was evaluated, we would consider it as breaking change. --- ...LightTreeBlackBoxCodegenTestGenerated.java | 6 ++++++ .../FirPsiBlackBoxCodegenTestGenerated.java | 6 ++++++ .../intrinsicConst/nullableEnumName.kt | 20 +++++++++++++++++++ .../IrBlackBoxCodegenTestGenerated.java | 6 ++++++ ...kBoxCodegenWithIrInlinerTestGenerated.java | 6 ++++++ .../LightAnalysisModeTestGenerated.java | 5 +++++ .../fir/FirJsCodegenBoxTestGenerated.java | 6 ++++++ .../test/ir/IrJsCodegenBoxTestGenerated.java | 6 ++++++ .../ir/IrJsES6CodegenBoxTestGenerated.java | 6 ++++++ .../FirNativeCodegenBoxTestGenerated.java | 6 ++++++ .../FirNativeCodegenBoxTestNoPLGenerated.java | 6 ++++++ .../NativeCodegenBoxTestGenerated.java | 6 ++++++ .../NativeCodegenBoxTestNoPLGenerated.java | 6 ++++++ 13 files changed, 91 insertions(+) create mode 100644 compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 0a36496be0d..ea1a29e4cbe 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -28873,6 +28873,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index ad7310425b2..177b75c90c9 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -28873,6 +28873,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt b/compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt new file mode 100644 index 00000000000..45ba86b655b --- /dev/null +++ b/compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt @@ -0,0 +1,20 @@ +// TARGET_BACKEND: JVM_IR +// TARGET_BACKEND: JS_IR +// TARGET_BACKEND: NATIVE +// WITH_STDLIB +fun T.id() = this + +enum class EnumClass { + OK +} + +val shouldNotBeEvaluated1 = EnumClass.OK?.name ?: "" +val shouldNotBeEvaluated2 = EnumClass.OK?.name?.toString() +val shouldNotBeEvaluated3 = EnumClass.OK?.name.toString() + +fun box(): String { + if (shouldNotBeEvaluated1 != "OK") return "Fail 1" + if (shouldNotBeEvaluated2 != "OK") return "Fail 2" + if (shouldNotBeEvaluated3 != "OK") return "Fail 3" + return shouldNotBeEvaluated1.id() +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 861e25e697b..7873820aa9a 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -28873,6 +28873,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index b17764ab59b..510729cfce9 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -28873,6 +28873,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index d8749f6c858..74cd58c4690 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -24375,6 +24375,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @TestMetadata("compiler/testData/codegen/box/involvesIrInterpreter/serialization") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java index 060015b41d9..4b436ce80e0 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java @@ -21397,6 +21397,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index f1f8b29ee8d..bd14e6a84ef 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -21397,6 +21397,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java index 5ddffea384a..d6706fd0243 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java @@ -21397,6 +21397,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java index e47c33b3093..e765f28fe3f 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java @@ -24222,6 +24222,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java index 4cf5202fe11..541db5b373f 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java @@ -24698,6 +24698,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index aaaeac99ceb..66dcf335480 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -23985,6 +23985,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java index f6d5ac20c73..86386729c4e 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java @@ -24223,6 +24223,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT public void testKt58717() throws Exception { runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/kt58717.kt"); } + + @Test + @TestMetadata("nullableEnumName.kt") + public void testNullableEnumName() throws Exception { + runTest("compiler/testData/codegen/box/involvesIrInterpreter/intrinsicConst/nullableEnumName.kt"); + } } @Nested