diff --git a/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/lib/l.kt b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/lib/l.kt new file mode 100644 index 00000000000..8c1756e0a4f --- /dev/null +++ b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/lib/l.kt @@ -0,0 +1,21 @@ +package lib + +interface I { + fun f(): Int + val p1: Int + val p2: Int +} + +interface I2: I { + fun compute() = f() * p1 * p2 +} + +abstract class AC : I2 { + override fun f() = 42 + override val p1 get() = 2 + override val p2 get() = -1 +} + +// All callables are correctly implemented in class C. +// Need to check that no false positives of "non-implemented" callables are detected for this case. +class C : I, AC() diff --git a/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/lib/module.info b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/lib/module.info new file mode 100644 index 00000000000..a741ebc06bd --- /dev/null +++ b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/lib/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib \ No newline at end of file diff --git a/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/main/m.kt b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/main/m.kt new file mode 100644 index 00000000000..ad56433be10 --- /dev/null +++ b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/main/m.kt @@ -0,0 +1,10 @@ +import abitestutils.abiTest +import lib.C + +fun box() = abiTest { + val c = C() + expectSuccess(42) { c.f() } + expectSuccess(2) { c.p1 } + expectSuccess(-1) { c.p2 } + expectSuccess(-84) { c.compute() } +} diff --git a/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/main/module.info b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/main/module.info new file mode 100644 index 00000000000..aec43fd9375 --- /dev/null +++ b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/main/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib diff --git a/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/project.info b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/project.info new file mode 100644 index 00000000000..9f96b1357be --- /dev/null +++ b/compiler/testData/klibABI/noNonImplementedCallableFalsePositives/project.info @@ -0,0 +1,4 @@ +MODULES: lib, main + +STEP 0: + libs: lib, main 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 ad294df1a5f..a3a29e1b3cc 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 @@ -40,6 +40,11 @@ public class JsKLibABINoICTestCaseGenerated extends AbstractJsKLibABINoICTestCas runTest("compiler/testData/klibABI/changePropertyVisibility/"); } + @TestMetadata("noNonImplementedCallableFalsePositives") + public void testNoNonImplementedCallableFalsePositives() throws Exception { + runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/"); + } + @TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract") public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception { runTest("compiler/testData/klibABI/nonAbstractFunctionInAbstractClassBecomesAbstract/"); 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 8ec2da526b6..87afb42fb54 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 @@ -40,6 +40,11 @@ public class JsKLibABIWithICTestCaseGenerated extends AbstractJsKLibABIWithICTes runTest("compiler/testData/klibABI/changePropertyVisibility/"); } + @TestMetadata("noNonImplementedCallableFalsePositives") + public void testNoNonImplementedCallableFalsePositives() throws Exception { + runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/"); + } + @TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract") public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception { runTest("compiler/testData/klibABI/nonAbstractFunctionInAbstractClassBecomesAbstract/"); 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 2f133860f76..782e1fcdc19 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 @@ -36,6 +36,12 @@ public class KlibABITestGenerated extends AbstractNativeKlibABITest { runTest("compiler/testData/klibABI/changePropertyVisibility/"); } + @Test + @TestMetadata("noNonImplementedCallableFalsePositives") + public void testNoNonImplementedCallableFalsePositives() throws Exception { + runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/"); + } + @Test @TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract") public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception {