From 7815529eedf8216567ec2c6d2f82a7b0006b7464 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 21 Oct 2020 21:37:32 +0300 Subject: [PATCH] [Private fake overrides] Tests for private fake overrides construction --- .../ir/FirBlackBoxCodegenTestGenerated.java | 10 ++ .../box/fakeOverride/privateFakeOverrides0.kt | 59 ++++++++++ .../box/fakeOverride/privateFakeOverrides1.kt | 103 ++++++++++++++++++ .../codegen/BlackBoxCodegenTestGenerated.java | 10 ++ .../LightAnalysisModeTestGenerated.java | 10 ++ .../ir/IrBlackBoxCodegenTestGenerated.java | 10 ++ .../IrJsCodegenBoxES6TestGenerated.java | 10 ++ .../IrJsCodegenBoxTestGenerated.java | 10 ++ .../semantics/JsCodegenBoxTestGenerated.java | 10 ++ 9 files changed, 232 insertions(+) create mode 100644 compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt create mode 100644 compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java index bdf2344e07a..2c0811e0e7e 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java @@ -11761,6 +11761,16 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT runTest("compiler/testData/codegen/box/fakeOverride/function.kt"); } + @TestMetadata("privateFakeOverrides0.kt") + public void testPrivateFakeOverrides0() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt"); + } + + @TestMetadata("privateFakeOverrides1.kt") + public void testPrivateFakeOverrides1() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt"); + } + @TestMetadata("propertyGetter.kt") public void testPropertyGetter() throws Exception { runTest("compiler/testData/codegen/box/fakeOverride/propertyGetter.kt"); diff --git a/compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt b/compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt new file mode 100644 index 00000000000..b4f805a0fe0 --- /dev/null +++ b/compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt @@ -0,0 +1,59 @@ +// MODULE: lib +// FILE: lib.kt +// WITH_RUNTIME + +import kotlin.test.assertEquals + +// Private classes +private open class A { + public fun foo1() = "PASS" + internal fun foo2() = "PASS" + protected fun foo3() = "PASS" +} + +private class B:A() { + fun foo4() = foo3() +} + +// Private interfaces +private interface C { + fun foo() = "PASS" +} + +private class D: C + +fun runner(): String { + assertEquals(B().foo1(), "PASS") + assertEquals(B().foo2(), "PASS") + assertEquals(B().foo4(), "PASS") + + assertEquals(D().foo(), "PASS") + + // Objects + object : A(){ + fun foo4() = foo3() + }.apply { + assertEquals(foo1(), "PASS") + assertEquals(foo2(), "PASS") + assertEquals(foo4(), "PASS") + } + + // Function local classes + abstract class E { + public open fun foo1() = "PASS" + internal open fun foo2() = "PASS" + protected open fun foo3() = "PASS" + } + class F : E() { + fun foo4() = foo3() + } + assertEquals(F().foo1(), "PASS") + assertEquals(F().foo2(), "PASS") + assertEquals(F().foo4(), "PASS") + return("OK") +} + +// MODULE: main(lib) +// FILE: main.kt +fun box() = runner() + diff --git a/compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt b/compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt new file mode 100644 index 00000000000..b177cc918d0 --- /dev/null +++ b/compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt @@ -0,0 +1,103 @@ +// MODULE: lib +// FILE: lib.kt +// WITH_RUNTIME + +import kotlin.test.assertEquals + +// Private classes +private open class A { + public open fun foo1() = "FAIL" + internal open fun foo2() = "FAIL" + protected open fun foo3() = "FAIL" + private fun foo4() = "FAIL" +} + +private class B:A() { + override public fun foo1() = "PASS" + override internal fun foo2() = "PASS" + override protected fun foo3() = "PASS" + private fun foo4() = "PASS" + fun foo5() = foo3() + fun foo6() = foo4() +} + +private abstract class G { + public abstract fun foo1() + internal abstract fun foo2() + protected abstract fun foo3() + private fun foo4() = "FAIL" +} + +private class H:A() { + override public fun foo1() = "PASS" + override internal fun foo2() = "PASS" + override protected fun foo3() = "PASS" + private fun foo4() = "PASS" + fun foo5() = foo3() + fun foo6() = foo4() +} + + +// Private interfaces +private interface C { + fun foo() = "FAIL" +} + +private class D: C { + override fun foo() = "PASS" +} + +fun runner(): String { + assertEquals(B().foo1(), "PASS") + assertEquals(B().foo2(), "PASS") + assertEquals(B().foo5(), "PASS") + assertEquals(B().foo6(), "PASS") + + assertEquals(H().foo1(), "PASS") + assertEquals(H().foo2(), "PASS") + assertEquals(H().foo5(), "PASS") + assertEquals(H().foo6(), "PASS") + + assertEquals(D().foo(), "PASS") + + // Objects + object : A(){ + override public fun foo1() = "PASS" + override internal fun foo2() = "PASS" + override protected fun foo3() = "PASS" + private fun foo4() = "PASS" + fun foo5() = foo3() + fun foo6() = foo4() + }.apply { + assertEquals(foo1(), "PASS") + assertEquals(foo2(), "PASS") + assertEquals(foo5(), "PASS") + assertEquals(foo6(), "PASS") + } + + // Function local classes + open class E { + public open fun foo1() = "FAIL" + internal open fun foo2() = "FAIL" + protected open fun foo3() = "FAIL" + private fun foo4() = "FAIL" + } + class F : E() { + public override fun foo1() = "PASS" + internal override fun foo2() = "PASS" + protected override fun foo3() = "PASS" + private fun foo4() = "PASS" + fun foo5() = foo3() + fun foo6() = foo4() + } + assertEquals(F().foo1(), "PASS") + assertEquals(F().foo2(), "PASS") + assertEquals(F().foo5(), "PASS") + assertEquals(F().foo6(), "PASS") + + return "OK" +} + +// MODULE: main(lib) +// FILE: main.kt +fun box() = runner() diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 07ebbdf2936..951fe6ddcb2 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -13161,6 +13161,16 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/fakeOverride/function.kt"); } + @TestMetadata("privateFakeOverrides0.kt") + public void testPrivateFakeOverrides0() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt"); + } + + @TestMetadata("privateFakeOverrides1.kt") + public void testPrivateFakeOverrides1() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt"); + } + @TestMetadata("propertyGetter.kt") public void testPropertyGetter() throws Exception { runTest("compiler/testData/codegen/box/fakeOverride/propertyGetter.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 0050ad92b14..7006b1bfd61 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -13161,6 +13161,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/fakeOverride/function.kt"); } + @TestMetadata("privateFakeOverrides0.kt") + public void testPrivateFakeOverrides0() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt"); + } + + @TestMetadata("privateFakeOverrides1.kt") + public void testPrivateFakeOverrides1() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt"); + } + @TestMetadata("propertyGetter.kt") public void testPropertyGetter() throws Exception { runTest("compiler/testData/codegen/box/fakeOverride/propertyGetter.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index 6936966565e..ba5f8bba9e8 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -11761,6 +11761,16 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/fakeOverride/function.kt"); } + @TestMetadata("privateFakeOverrides0.kt") + public void testPrivateFakeOverrides0() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt"); + } + + @TestMetadata("privateFakeOverrides1.kt") + public void testPrivateFakeOverrides1() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt"); + } + @TestMetadata("propertyGetter.kt") public void testPropertyGetter() throws Exception { runTest("compiler/testData/codegen/box/fakeOverride/propertyGetter.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java index 6dda311d562..684ad63ccdb 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java @@ -10076,6 +10076,16 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes runTest("compiler/testData/codegen/box/fakeOverride/function.kt"); } + @TestMetadata("privateFakeOverrides0.kt") + public void testPrivateFakeOverrides0() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt"); + } + + @TestMetadata("privateFakeOverrides1.kt") + public void testPrivateFakeOverrides1() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt"); + } + @TestMetadata("propertyGetter.kt") public void testPropertyGetter() throws Exception { runTest("compiler/testData/codegen/box/fakeOverride/propertyGetter.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java index d7dccec904a..873e840b4d7 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/semantics/IrJsCodegenBoxTestGenerated.java @@ -10076,6 +10076,16 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/fakeOverride/function.kt"); } + @TestMetadata("privateFakeOverrides0.kt") + public void testPrivateFakeOverrides0() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt"); + } + + @TestMetadata("privateFakeOverrides1.kt") + public void testPrivateFakeOverrides1() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt"); + } + @TestMetadata("propertyGetter.kt") public void testPropertyGetter() throws Exception { runTest("compiler/testData/codegen/box/fakeOverride/propertyGetter.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 2c9ca1667a0..c6ee6025566 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 @@ -10076,6 +10076,16 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { runTest("compiler/testData/codegen/box/fakeOverride/function.kt"); } + @TestMetadata("privateFakeOverrides0.kt") + public void testPrivateFakeOverrides0() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides0.kt"); + } + + @TestMetadata("privateFakeOverrides1.kt") + public void testPrivateFakeOverrides1() throws Exception { + runTest("compiler/testData/codegen/box/fakeOverride/privateFakeOverrides1.kt"); + } + @TestMetadata("propertyGetter.kt") public void testPropertyGetter() throws Exception { runTest("compiler/testData/codegen/box/fakeOverride/propertyGetter.kt");