KT-30419 Box inline classes in return types of covariant overrides

Use boxed version of an inline class in return type position for
covariant and generic-specialized overrides.

Also fixes KT-35234 and KT-31585.
This commit is contained in:
Dmitry Petrov
2020-03-30 12:41:48 +03:00
parent e44f12d7b0
commit 24b8495e00
31 changed files with 1296 additions and 68 deletions
@@ -13889,6 +13889,104 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/inlineClasses/whenWithSubject.kt");
}
@TestMetadata("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class BoxReturnValueOnOverride extends AbstractBlackBoxCodegenTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
}
public void testAllFilesPresentInBoxReturnValueOnOverride() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@TestMetadata("covariantOverrideErasedToAny.kt")
public void testCovariantOverrideErasedToAny() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/covariantOverrideErasedToAny.kt");
}
@TestMetadata("covariantOverrideErasedToInterface.kt")
public void testCovariantOverrideErasedToInterface() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/covariantOverrideErasedToInterface.kt");
}
@TestMetadata("covariantOverrideErasedToPrimitive.kt")
public void testCovariantOverrideErasedToPrimitive() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/covariantOverrideErasedToPrimitive.kt");
}
@TestMetadata("covariantOverrideListVsMutableList.kt")
public void testCovariantOverrideListVsMutableList() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/covariantOverrideListVsMutableList.kt");
}
@TestMetadata("covariantOverrideUnrelatedInterfaces.kt")
public void testCovariantOverrideUnrelatedInterfaces() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/covariantOverrideUnrelatedInterfaces.kt");
}
@TestMetadata("genericOverride.kt")
public void testGenericOverride() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/genericOverride.kt");
}
@TestMetadata("genericOverrideSpecialized.kt")
public void testGenericOverrideSpecialized() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/genericOverrideSpecialized.kt");
}
@TestMetadata("inlineClassInOverriddenReturnTypes.kt")
public void testInlineClassInOverriddenReturnTypes() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/inlineClassInOverriddenReturnTypes.kt");
}
@TestMetadata("kt28483.kt")
public void testKt28483() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt28483.kt");
}
@TestMetadata("kt31585.kt")
public void testKt31585() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt31585.kt");
}
@TestMetadata("kt35234.kt")
public void testKt35234() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234.kt");
}
@TestMetadata("kt35234a.kt")
public void testKt35234a() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/kt35234a.kt");
}
@TestMetadata("relatedReturnTypes1a.kt")
public void testRelatedReturnTypes1a() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/relatedReturnTypes1a.kt");
}
@TestMetadata("relatedReturnTypes1b.kt")
public void testRelatedReturnTypes1b() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/relatedReturnTypes1b.kt");
}
@TestMetadata("relatedReturnTypes2a.kt")
public void testRelatedReturnTypes2a() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/relatedReturnTypes2a.kt");
}
@TestMetadata("relatedReturnTypes2b.kt")
public void testRelatedReturnTypes2b() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/relatedReturnTypes2b.kt");
}
@TestMetadata("unrelatedGenerics.kt")
public void testUnrelatedGenerics() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/boxReturnValueOnOverride/unrelatedGenerics.kt");
}
}
@TestMetadata("compiler/testData/codegen/box/inlineClasses/callableReferences")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)