From df862900832f33b799a1a4c53642d8351c9c9c18 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 1 Apr 2022 22:46:13 +0200 Subject: [PATCH] Add another test for KT-49715 and fix JS IR behavior #KT-49715 #KT-51798 Fixed --- .../FirBlackBoxCodegenTestGenerated.java | 6 ++++++ .../kotlin/ir/backend/js/utils/misc.kt | 6 ++++-- .../box/dataClasses/kt49715_behaviorChange.kt | 17 +++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 6 ++++++ .../codegen/IrBlackBoxCodegenTestGenerated.java | 6 ++++++ .../codegen/LightAnalysisModeTestGenerated.java | 5 +++++ .../js/test/JsCodegenBoxTestGenerated.java | 6 ++++++ .../js/test/ir/IrJsCodegenBoxTestGenerated.java | 6 ++++++ .../IrCodegenBoxWasmTestGenerated.java | 5 +++++ .../NativeCodegenBoxTestGenerated.java | 6 ++++++ 10 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java index d55627b1eae..65139905db3 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxCodegenTestGenerated.java @@ -13143,6 +13143,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @Test + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @Test @TestMetadata("kt5002.kt") public void testKt5002() throws Exception { diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt index 7ec33bc9bbb..ac5f8cad91d 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/utils/misc.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.types.isNullableAny import org.jetbrains.kotlin.ir.util.isEffectivelyExternal import org.jetbrains.kotlin.ir.util.isTopLevelDeclaration import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.util.OperatorNameConventions fun TODO(element: IrElement): Nothing = TODO(element::class.java.simpleName + " is not supported yet here") @@ -58,9 +59,10 @@ fun IrFunction.hasStableJsName(context: JsIrBackendContext): Boolean { return (isEffectivelyExternal() || getJsName() != null || isExported(context)) && namedOrMissingGetter } -fun IrFunction.isEqualsInheritedFromAny() = - name == Name.identifier("equals") && +fun IrFunction.isEqualsInheritedFromAny(): Boolean = + name == OperatorNameConventions.EQUALS && dispatchReceiverParameter != null && + extensionReceiverParameter == null && valueParameters.size == 1 && valueParameters[0].type.isNullableAny() diff --git a/compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt b/compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt new file mode 100644 index 00000000000..2858188a80d --- /dev/null +++ b/compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt @@ -0,0 +1,17 @@ +// IGNORE_BACKEND_FIR: JVM_IR +// FIR status: [IR VALIDATION] Duplicate IR node: FUN GENERATED_DATA_CLASS_MEMBER name:equals + +interface A { + fun Any.equals(other: Any?): Boolean = false + fun Any.hashCode(): Int = 0 + fun Any.toString(): String = "" +} + +data class B(val x: Int) : A + +fun box(): String { + if (B(42) != B(42)) return "Fail equals" + if (B(42).hashCode() != B(42).hashCode()) return "Fail hashCode" + if (B(42).toString() != B(42).toString()) return "Fail toString" + return "OK" +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 70034788a88..b9337bea993 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -13017,6 +13017,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @Test + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @Test @TestMetadata("kt5002.kt") public void testKt5002() throws Exception { 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 3f1991f4c6f..c68f6983a6b 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 @@ -13143,6 +13143,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @Test + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @Test @TestMetadata("kt5002.kt") public void testKt5002() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 933e3994b4d..d96c53e302a 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -10542,6 +10542,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @TestMetadata("kt5002.kt") public void testKt5002() throws Exception { runTest("compiler/testData/codegen/box/dataClasses/kt5002.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java index 828c8bd77ef..c7a2e095aa4 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsCodegenBoxTestGenerated.java @@ -9731,6 +9731,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @Test + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @Test @TestMetadata("mixedParams.kt") public void testMixedParams() throws Exception { 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 28b28f76505..074fadd6b6a 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 @@ -9773,6 +9773,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @Test + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @Test @TestMetadata("mixedParams.kt") public void testMixedParams() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java index 234493f9bfb..737608559c9 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/testOld/wasm/semantics/IrCodegenBoxWasmTestGenerated.java @@ -8554,6 +8554,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @TestMetadata("mixedParams.kt") public void testMixedParams() throws Exception { runTest("compiler/testData/codegen/box/dataClasses/mixedParams.kt"); 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 2eb34ffbe98..40d8c96d7c1 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 @@ -10687,6 +10687,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/dataClasses/kt49715.kt"); } + @Test + @TestMetadata("kt49715_behaviorChange.kt") + public void testKt49715_behaviorChange() throws Exception { + runTest("compiler/testData/codegen/box/dataClasses/kt49715_behaviorChange.kt"); + } + @Test @TestMetadata("mixedParams.kt") public void testMixedParams() throws Exception {