[IR][tests] Add test to check absence of false positively-detected unimplemented callables
^KT-53663
This commit is contained in:
@@ -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()
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
STEP 0:
|
||||||
|
dependencies: stdlib
|
||||||
@@ -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() }
|
||||||
|
}
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
STEP 0:
|
||||||
|
dependencies: stdlib, lib
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
MODULES: lib, main
|
||||||
|
|
||||||
|
STEP 0:
|
||||||
|
libs: lib, main
|
||||||
+5
@@ -40,6 +40,11 @@ public class JsKLibABINoICTestCaseGenerated extends AbstractJsKLibABINoICTestCas
|
|||||||
runTest("compiler/testData/klibABI/changePropertyVisibility/");
|
runTest("compiler/testData/klibABI/changePropertyVisibility/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("noNonImplementedCallableFalsePositives")
|
||||||
|
public void testNoNonImplementedCallableFalsePositives() throws Exception {
|
||||||
|
runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract")
|
@TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract")
|
||||||
public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception {
|
public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception {
|
||||||
runTest("compiler/testData/klibABI/nonAbstractFunctionInAbstractClassBecomesAbstract/");
|
runTest("compiler/testData/klibABI/nonAbstractFunctionInAbstractClassBecomesAbstract/");
|
||||||
|
|||||||
+5
@@ -40,6 +40,11 @@ public class JsKLibABIWithICTestCaseGenerated extends AbstractJsKLibABIWithICTes
|
|||||||
runTest("compiler/testData/klibABI/changePropertyVisibility/");
|
runTest("compiler/testData/klibABI/changePropertyVisibility/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("noNonImplementedCallableFalsePositives")
|
||||||
|
public void testNoNonImplementedCallableFalsePositives() throws Exception {
|
||||||
|
runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract")
|
@TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract")
|
||||||
public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception {
|
public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception {
|
||||||
runTest("compiler/testData/klibABI/nonAbstractFunctionInAbstractClassBecomesAbstract/");
|
runTest("compiler/testData/klibABI/nonAbstractFunctionInAbstractClassBecomesAbstract/");
|
||||||
|
|||||||
Generated
+6
@@ -36,6 +36,12 @@ public class KlibABITestGenerated extends AbstractNativeKlibABITest {
|
|||||||
runTest("compiler/testData/klibABI/changePropertyVisibility/");
|
runTest("compiler/testData/klibABI/changePropertyVisibility/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("noNonImplementedCallableFalsePositives")
|
||||||
|
public void testNoNonImplementedCallableFalsePositives() throws Exception {
|
||||||
|
runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract")
|
@TestMetadata("nonAbstractFunctionInAbstractClassBecomesAbstract")
|
||||||
public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception {
|
public void testNonAbstractFunctionInAbstractClassBecomesAbstract() throws Exception {
|
||||||
|
|||||||
Reference in New Issue
Block a user