From 296c1cbd0f4afaa8274f3569ef8ac98d52b5c020 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Mon, 29 Aug 2022 16:34:55 +0200 Subject: [PATCH] [Native][tests] Add partial linkage tests (muted) for replacement-of-return-type case ^KT-51707 --- .../replaceCallableReturnType/lib1/l1.kt | 14 ++++++++++++++ .../replaceCallableReturnType/lib1/l1.kt.1 | 18 ++++++++++++++++++ .../replaceCallableReturnType/lib1/module.info | 6 ++++++ .../replaceCallableReturnType/lib2/l2.kt | 5 +++++ .../replaceCallableReturnType/lib2/module.info | 2 ++ .../replaceCallableReturnType/main/m.kt | 8 ++++++++ .../replaceCallableReturnType/main/module.info | 2 ++ .../replaceCallableReturnType/project.info | 8 ++++++++ .../test/JsKLibABINoICTestCaseGenerated.java | 5 +++++ .../test/JsKLibABIWithICTestCaseGenerated.java | 5 +++++ .../blackboxtest/KlibABITestGenerated.java | 6 ++++++ 11 files changed, 79 insertions(+) create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt.1 create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/lib1/module.info create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/lib2/l2.kt create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/lib2/module.info create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/main/m.kt create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/main/module.info create mode 100644 compiler/testData/klibABI/replaceCallableReturnType/project.info diff --git a/compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt b/compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt new file mode 100644 index 00000000000..87be270904d --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt @@ -0,0 +1,14 @@ +class Foo(val seed: Int) { + override fun toString() = "Foo[$seed]" + fun doCommon() = seed - 1 + fun doSpecificFoo() = seed - 1 +} + +class Bar(val seed: Int) { + override fun toString() = "Bar[$seed]" + fun doCommon() = seed + 1 + fun doSpecificBar() = seed + 1 +} + +val topLevelProperty = Foo(42) +fun topLevelFunction() = Foo(42) diff --git a/compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt.1 b/compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt.1 new file mode 100644 index 00000000000..3000c733193 --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/lib1/l1.kt.1 @@ -0,0 +1,18 @@ +// same +class Foo(val seed: Int) { + override fun toString() = "Foo[$seed]" + fun doCommon() = seed - 1 + fun doSpecificFoo() = seed - 1 +} + +// same +class Bar(val seed: Int) { + override fun toString() = "Bar[$seed]" + fun doCommon() = seed + 1 + fun doSpecificBar() = seed + 1 +} + +//val topLevelProperty = Foo(42) +val topLevelProperty = Bar(42) +//fun topLevelFunction() = Foo(42) +fun topLevelFunction() = Bar(42) diff --git a/compiler/testData/klibABI/replaceCallableReturnType/lib1/module.info b/compiler/testData/klibABI/replaceCallableReturnType/lib1/module.info new file mode 100644 index 00000000000..99edefccd79 --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/lib1/module.info @@ -0,0 +1,6 @@ +STEP 0: + dependencies: stdlib +STEP 1: + dependencies: stdlib + modifications: + U : l1.kt.1 -> l1.kt diff --git a/compiler/testData/klibABI/replaceCallableReturnType/lib2/l2.kt b/compiler/testData/klibABI/replaceCallableReturnType/lib2/l2.kt new file mode 100644 index 00000000000..23d1e2451bd --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/lib2/l2.kt @@ -0,0 +1,5 @@ +fun doCommonViaProperty() = topLevelProperty.doCommon() +fun doSpecificViaProperty() = topLevelProperty.doSpecificFoo() // Because, initially topLevelProperty had type Foo. + +fun doCommonViaFunction() = topLevelFunction().doCommon() +fun doSpecificViaFunction() = topLevelFunction().doSpecificFoo() // Because, initially topLevelFunction had return type Foo. diff --git a/compiler/testData/klibABI/replaceCallableReturnType/lib2/module.info b/compiler/testData/klibABI/replaceCallableReturnType/lib2/module.info new file mode 100644 index 00000000000..391aab979a6 --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/lib2/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/replaceCallableReturnType/main/m.kt b/compiler/testData/klibABI/replaceCallableReturnType/main/m.kt new file mode 100644 index 00000000000..88836051a95 --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/main/m.kt @@ -0,0 +1,8 @@ +import abitestutils.abiTest + +fun box() = abiTest { + expectFailure(prefixed("???")) { doCommonViaProperty() } + expectFailure(prefixed("???")) { doSpecificViaProperty() } + expectFailure(prefixed("???")) { doCommonViaFunction() } + expectFailure(prefixed("???")) { doSpecificViaFunction() } +} diff --git a/compiler/testData/klibABI/replaceCallableReturnType/main/module.info b/compiler/testData/klibABI/replaceCallableReturnType/main/module.info new file mode 100644 index 00000000000..62f7f4fab07 --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/main/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1, lib2 \ No newline at end of file diff --git a/compiler/testData/klibABI/replaceCallableReturnType/project.info b/compiler/testData/klibABI/replaceCallableReturnType/project.info new file mode 100644 index 00000000000..7174f018f58 --- /dev/null +++ b/compiler/testData/klibABI/replaceCallableReturnType/project.info @@ -0,0 +1,8 @@ +MUTED +MODULES: lib1, lib2, main + +STEP 0: + libs: lib1, lib2, main + +STEP 1: + libs: lib1 \ No newline at end of file diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABINoICTestCaseGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABINoICTestCaseGenerated.java index 1b7787dcd7c..ad294df1a5f 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABINoICTestCaseGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABINoICTestCaseGenerated.java @@ -145,6 +145,11 @@ public class JsKLibABINoICTestCaseGenerated extends AbstractJsKLibABINoICTestCas runTest("compiler/testData/klibABI/removeProperty/"); } + @TestMetadata("replaceCallableReturnType") + public void testReplaceCallableReturnType() throws Exception { + runTest("compiler/testData/klibABI/replaceCallableReturnType/"); + } + @TestMetadata("typeAliasRHSTypeChange") public void testTypeAliasRHSTypeChange() throws Exception { runTest("compiler/testData/klibABI/typeAliasRHSTypeChange/"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABIWithICTestCaseGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABIWithICTestCaseGenerated.java index 5b0146f1231..8ec2da526b6 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABIWithICTestCaseGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABIWithICTestCaseGenerated.java @@ -145,6 +145,11 @@ public class JsKLibABIWithICTestCaseGenerated extends AbstractJsKLibABIWithICTes runTest("compiler/testData/klibABI/removeProperty/"); } + @TestMetadata("replaceCallableReturnType") + public void testReplaceCallableReturnType() throws Exception { + runTest("compiler/testData/klibABI/replaceCallableReturnType/"); + } + @TestMetadata("typeAliasRHSTypeChange") public void testTypeAliasRHSTypeChange() throws Exception { runTest("compiler/testData/klibABI/typeAliasRHSTypeChange/"); diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/KlibABITestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/KlibABITestGenerated.java index a62c4683ff5..2f133860f76 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/KlibABITestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/KlibABITestGenerated.java @@ -162,6 +162,12 @@ public class KlibABITestGenerated extends AbstractNativeKlibABITest { runTest("compiler/testData/klibABI/removeProperty/"); } + @Test + @TestMetadata("replaceCallableReturnType") + public void testReplaceCallableReturnType() throws Exception { + runTest("compiler/testData/klibABI/replaceCallableReturnType/"); + } + @Test @TestMetadata("typeAliasRHSTypeChange") public void testTypeAliasRHSTypeChange() throws Exception {