From 68f9f4b3b59212748f3acd30c44151f2a94be6d6 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Mon, 24 Dec 2018 12:00:29 +0300 Subject: [PATCH] Add a test --- ...deFromInterfaceThroughIntermediateClass.kt | 21 +++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 5 +++++ .../LightAnalysisModeTestGenerated.java | 5 +++++ .../ir/IrBlackBoxCodegenTestGenerated.java | 5 +++++ .../IrJsCodegenBoxTestGenerated.java | 5 +++++ .../semantics/JsCodegenBoxTestGenerated.java | 5 +++++ 6 files changed, 46 insertions(+) create mode 100644 compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt diff --git a/compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt b/compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt new file mode 100644 index 00000000000..09a3f7f25d6 --- /dev/null +++ b/compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt @@ -0,0 +1,21 @@ +// KT-4145 + +interface A { + fun foo(): Any +} + +interface B { + fun foo(): String = "A" +} + +open class D: B + +open class C: D(), A + +fun box(): String { + val a: A = C() + if (a.foo() != "A") return "Fail 1" + if ((a as B).foo() != "A") return "Fail 2" + if ((a as C).foo() != "A") return "Fail 3" + return "OK" +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index ed03b8dab20..9534443dff8 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -1251,6 +1251,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/bridges/fakeGenericCovariantOverrideWithDelegation.kt"); } + @TestMetadata("fakeOverrideFromInterfaceThroughIntermediateClass.kt") + public void testFakeOverrideFromInterfaceThroughIntermediateClass() throws Exception { + runTest("compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt"); + } + @TestMetadata("fakeOverrideOfTraitImpl.kt") public void testFakeOverrideOfTraitImpl() throws Exception { runTest("compiler/testData/codegen/box/bridges/fakeOverrideOfTraitImpl.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 8e419f91388..9acbf941168 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -1251,6 +1251,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/bridges/fakeGenericCovariantOverrideWithDelegation.kt"); } + @TestMetadata("fakeOverrideFromInterfaceThroughIntermediateClass.kt") + public void testFakeOverrideFromInterfaceThroughIntermediateClass() throws Exception { + runTest("compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt"); + } + @TestMetadata("fakeOverrideOfTraitImpl.kt") public void testFakeOverrideOfTraitImpl() throws Exception { runTest("compiler/testData/codegen/box/bridges/fakeOverrideOfTraitImpl.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index f19fc7d4185..1be54e23f49 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -1251,6 +1251,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/bridges/fakeGenericCovariantOverrideWithDelegation.kt"); } + @TestMetadata("fakeOverrideFromInterfaceThroughIntermediateClass.kt") + public void testFakeOverrideFromInterfaceThroughIntermediateClass() throws Exception { + runTest("compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt"); + } + @TestMetadata("fakeOverrideOfTraitImpl.kt") public void testFakeOverrideOfTraitImpl() throws Exception { runTest("compiler/testData/codegen/box/bridges/fakeOverrideOfTraitImpl.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java index fb61d5815a1..0294d935a35 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/IrJsCodegenBoxTestGenerated.java @@ -956,6 +956,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/bridges/fakeGenericCovariantOverrideWithDelegation.kt"); } + @TestMetadata("fakeOverrideFromInterfaceThroughIntermediateClass.kt") + public void testFakeOverrideFromInterfaceThroughIntermediateClass() throws Exception { + runTest("compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt"); + } + @TestMetadata("fakeOverrideOfTraitImpl.kt") public void testFakeOverrideOfTraitImpl() throws Exception { runTest("compiler/testData/codegen/box/bridges/fakeOverrideOfTraitImpl.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index 9f5a959e6ed..ff399600595 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -956,6 +956,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/bridges/fakeGenericCovariantOverrideWithDelegation.kt"); } + @TestMetadata("fakeOverrideFromInterfaceThroughIntermediateClass.kt") + public void testFakeOverrideFromInterfaceThroughIntermediateClass() throws Exception { + runTest("compiler/testData/codegen/box/bridges/fakeOverrideFromInterfaceThroughIntermediateClass.kt"); + } + @TestMetadata("fakeOverrideOfTraitImpl.kt") public void testFakeOverrideOfTraitImpl() throws Exception { runTest("compiler/testData/codegen/box/bridges/fakeOverrideOfTraitImpl.kt");