From 96ce12426814ed93696b02103e1282ba7901e63e Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Thu, 13 May 2021 15:48:21 +0300 Subject: [PATCH] JVM_IR: serialize fake overrides in IR --- .../FirBlackBoxInlineCodegenTestGenerated.java | 6 ++++++ .../backend/jvm/serialization/JvmIrSerializer.kt | 3 +++ .../codegen/boxInline/innerClasses/fakeOverride.kt | 13 +++++++++++++ .../codegen/BlackBoxInlineCodegenTestGenerated.java | 6 ++++++ ...mpileKotlinAgainstInlineKotlinTestGenerated.java | 6 ++++++ .../IrBlackBoxInlineCodegenTestGenerated.java | 6 ++++++ ...mpileKotlinAgainstInlineKotlinTestGenerated.java | 6 ++++++ ...mpileKotlinAgainstInlineKotlinTestGenerated.java | 6 ++++++ .../JvmIrAgainstOldBoxInlineTestGenerated.java | 6 ++++++ .../JvmOldAgainstIrBoxInlineTestGenerated.java | 6 ++++++ .../IrJsCodegenInlineES6TestGenerated.java | 5 +++++ .../semantics/IrJsCodegenInlineTestGenerated.java | 5 +++++ .../semantics/JsCodegenInlineTestGenerated.java | 5 +++++ 13 files changed, 79 insertions(+) create mode 100644 compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxInlineCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxInlineCodegenTestGenerated.java index 39db1bcfe5b..66fc2bd0df8 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxInlineCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirBlackBoxInlineCodegenTestGenerated.java @@ -2516,6 +2516,12 @@ public class FirBlackBoxInlineCodegenTestGenerated extends AbstractFirBlackBoxIn runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializer.kt b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializer.kt index 0268649d060..239a3a9185f 100644 --- a/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializer.kt +++ b/compiler/ir/serialization.jvm/src/org/jetbrains/kotlin/backend/jvm/serialization/JvmIrSerializer.kt @@ -26,6 +26,9 @@ class JvmIrSerializer( // Usage protocol: construct an instance, call only one of `serializeIrFile()` and `serializeTopLevelClass()` only once. + // We do not reconstruct fake overrides upon deserialization (yet). + override fun backendSpecificSerializeAllMembers(irClass: IrClass): Boolean = true + fun serializeJvmIrFile(irFile: IrFile): JvmIr.JvmIrFile { val proto = JvmIr.JvmIrFile.newBuilder() diff --git a/compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt b/compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt new file mode 100644 index 00000000000..ac9772c5eaa --- /dev/null +++ b/compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt @@ -0,0 +1,13 @@ +// FILE: 1.kt + +open class C { + fun f() = "OK" +} + +inline fun inlineFun(): String { + val cc = object : C() {} + return cc.f() +} + +// FILE: 2.kt +fun box() = inlineFun() \ No newline at end of file diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java index baa56d1e4d4..c885eb97785 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxInlineCodegenTestGenerated.java @@ -2516,6 +2516,12 @@ public class BlackBoxInlineCodegenTestGenerated extends AbstractBlackBoxInlineCo runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java index 33f3363c695..1cb8e768483 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/CompileKotlinAgainstInlineKotlinTestGenerated.java @@ -2516,6 +2516,12 @@ public class CompileKotlinAgainstInlineKotlinTestGenerated extends AbstractCompi runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenTestGenerated.java index 8ef58d64cd7..34c2354822b 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxInlineCodegenTestGenerated.java @@ -2516,6 +2516,12 @@ public class IrBlackBoxInlineCodegenTestGenerated extends AbstractIrBlackBoxInli runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java index e63da2b8cd0..4722ac1e7d9 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrCompileKotlinAgainstInlineKotlinTestGenerated.java @@ -2516,6 +2516,12 @@ public class IrCompileKotlinAgainstInlineKotlinTestGenerated extends AbstractIrC runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java index d63d75d0875..f9ee9ed142f 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java @@ -2456,6 +2456,12 @@ public class IrSerializeCompileKotlinAgainstInlineKotlinTestGenerated extends Ab runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java index 8db6ee4da49..08ad06707a7 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmIrAgainstOldBoxInlineTestGenerated.java @@ -2516,6 +2516,12 @@ public class JvmIrAgainstOldBoxInlineTestGenerated extends AbstractJvmIrAgainstO runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java index 3b4aedaea55..448045711b8 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/JvmOldAgainstIrBoxInlineTestGenerated.java @@ -2516,6 +2516,12 @@ public class JvmOldAgainstIrBoxInlineTestGenerated extends AbstractJvmOldAgainst runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + @Test + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } + @Test @TestMetadata("innerLambda.kt") public void testInnerLambda() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenInlineES6TestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenInlineES6TestGenerated.java index 8c4aefec3af..bd21243bdc3 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenInlineES6TestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenInlineES6TestGenerated.java @@ -2019,6 +2019,11 @@ public class IrJsCodegenInlineES6TestGenerated extends AbstractIrJsCodegenInline public void testCaptureThisAndOuter() throws Exception { runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } } @TestMetadata("compiler/testData/codegen/boxInline/invokedynamic") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenInlineTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenInlineTestGenerated.java index fb89be60773..df8871f0c57 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenInlineTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenInlineTestGenerated.java @@ -2019,6 +2019,11 @@ public class IrJsCodegenInlineTestGenerated extends AbstractIrJsCodegenInlineTes public void testCaptureThisAndOuter() throws Exception { runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } } @TestMetadata("compiler/testData/codegen/boxInline/invokedynamic") diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenInlineTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenInlineTestGenerated.java index 19fb085aaf8..346b356a3cf 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenInlineTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/semantics/JsCodegenInlineTestGenerated.java @@ -2019,6 +2019,11 @@ public class JsCodegenInlineTestGenerated extends AbstractJsCodegenInlineTest { public void testCaptureThisAndOuter() throws Exception { runTest("compiler/testData/codegen/boxInline/innerClasses/captureThisAndOuter.kt"); } + + @TestMetadata("fakeOverride.kt") + public void testFakeOverride() throws Exception { + runTest("compiler/testData/codegen/boxInline/innerClasses/fakeOverride.kt"); + } } @TestMetadata("compiler/testData/codegen/boxInline/invokedynamic")