From 238b2245e98d9c9aff578eeedae195cb443fbb20 Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Sun, 17 May 2020 04:07:35 +0300 Subject: [PATCH] A set of tests on fake override motion in class hierarchy (cherry picked from commit 4612e03d24fb3ff55c1622ea11fe892d5f1f1965) --- backend.native/tests/build.gradle | 14 ++++++++++++++ backend.native/tests/link/fake_overrides/base.kt | 6 ++++++ backend.native/tests/link/fake_overrides/main.kt | 9 +++++++++ backend.native/tests/link/fake_overrides/move.kt | 15 +++++++++++++++ backend.native/tests/link/fake_overrides/move2.kt | 15 +++++++++++++++ backend.native/tests/link/fake_overrides/use.kt | 8 ++++++++ 6 files changed, 67 insertions(+) create mode 100644 backend.native/tests/link/fake_overrides/base.kt create mode 100644 backend.native/tests/link/fake_overrides/main.kt create mode 100644 backend.native/tests/link/fake_overrides/move.kt create mode 100644 backend.native/tests/link/fake_overrides/move2.kt create mode 100644 backend.native/tests/link/fake_overrides/use.kt diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index fcf27748884..dc4fc43a48d 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -4001,6 +4001,20 @@ task library_ir_provider_mismatch(type: KonanDriverTest) { } } +standaloneTest("fake_override_0") { + def sources = "$projectDir/link/fake_overrides" + def dir = buildDir.absolutePath + doBeforeBuild { + konanc("$sources/base.kt -p library -o $dir/base") + konanc("$sources/move.kt -p library -o $dir/move -r $dir -l base") + konanc("$sources/use.kt -p library -o $dir/use -r $dir -l move") + konanc("$sources/move2.kt -p library -o $dir/move -r $dir -l base") + } + source = "$sources/main.kt" + flags = ["-l", "use", "-r", "$dir"] + goldValue = "Moved\nMoved\nChild\nSuper\n" +} + if (isAppleTarget(project)) { task testObjCExport(type: FrameworkTest) { final String frameworkName = 'Kt' diff --git a/backend.native/tests/link/fake_overrides/base.kt b/backend.native/tests/link/fake_overrides/base.kt new file mode 100644 index 00000000000..a52fbad5de4 --- /dev/null +++ b/backend.native/tests/link/fake_overrides/base.kt @@ -0,0 +1,6 @@ +package serialization.fake_overrides + +open class A { + open fun qux() = "Super" + open fun tic() = "Super" +} diff --git a/backend.native/tests/link/fake_overrides/main.kt b/backend.native/tests/link/fake_overrides/main.kt new file mode 100644 index 00000000000..c455409502b --- /dev/null +++ b/backend.native/tests/link/fake_overrides/main.kt @@ -0,0 +1,9 @@ +import serialization.fake_overrides.* +fun test1() = println(Z().bar()) + +fun main() { + test0() + test1() + test2() + test3() +} diff --git a/backend.native/tests/link/fake_overrides/move.kt b/backend.native/tests/link/fake_overrides/move.kt new file mode 100644 index 00000000000..b707c1a8a44 --- /dev/null +++ b/backend.native/tests/link/fake_overrides/move.kt @@ -0,0 +1,15 @@ +package serialization.fake_overrides + +open class X { +} + +class Y: X() { + fun bar() = "Stale" +} + +class B: A() { +} + +class C: A() { + override fun tic() = "Child" +} diff --git a/backend.native/tests/link/fake_overrides/move2.kt b/backend.native/tests/link/fake_overrides/move2.kt new file mode 100644 index 00000000000..655cf7eda1e --- /dev/null +++ b/backend.native/tests/link/fake_overrides/move2.kt @@ -0,0 +1,15 @@ +package serialization.fake_overrides + +open class X { + fun bar() = "Moved" +} + +class Y: X() { +} + +class B: A() { + override fun qux() = "Child" +} + +class C: A() { +} diff --git a/backend.native/tests/link/fake_overrides/use.kt b/backend.native/tests/link/fake_overrides/use.kt new file mode 100644 index 00000000000..fcee6cbffd7 --- /dev/null +++ b/backend.native/tests/link/fake_overrides/use.kt @@ -0,0 +1,8 @@ +package serialization.fake_overrides + +class Z: X() { +} + +fun test0() = println(Y().bar()) +fun test2() = println(B().qux()) +fun test3() = println(C().qux())