From bde9b3e5ed0683f2279545ea5498a3acc5c55d94 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Wed, 1 Aug 2018 16:56:09 +0300 Subject: [PATCH] Added linkage tests on synthetic fields --- backend.native/tests/build.gradle | 18 ++++++++++++++++++ .../codegen/classDelegation/linkTest_lib.kt | 14 ++++++++++++++ .../codegen/classDelegation/linkTest_main.kt | 15 +++++++++++++++ .../correctFieldsOrder_lib.kt | 7 +++++++ .../correctFieldsOrder_main.kt | 13 +++++++++++++ .../tests/codegen/innerClass/linkTest_lib.kt | 5 +++++ .../tests/codegen/innerClass/linkTest_main.kt | 7 +++++++ 7 files changed, 79 insertions(+) create mode 100644 backend.native/tests/codegen/classDelegation/linkTest_lib.kt create mode 100644 backend.native/tests/codegen/classDelegation/linkTest_main.kt create mode 100644 backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_lib.kt create mode 100644 backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_main.kt create mode 100644 backend.native/tests/codegen/innerClass/linkTest_lib.kt create mode 100644 backend.native/tests/codegen/innerClass/linkTest_main.kt diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 336daeb1ce1..2765c7c6da0 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -876,6 +876,12 @@ task innerClass_secondaryConstructor(type: RunKonanTest) { source = "codegen/innerClass/secondaryConstructor.kt" } +task innerClass_linkTest(type: LinkKonanTest) { + goldValue = "" + source = "codegen/innerClass/linkTest_main.kt" + lib = "codegen/innerClass/linkTest_lib.kt" +} + task localClass_localHierarchy(type: RunKonanTest) { goldValue = "OK\n" source = "codegen/localClass/localHierarchy.kt" @@ -1087,6 +1093,12 @@ task classDelegation_withBridge(type: RunKonanTest) { source = "codegen/classDelegation/withBridge.kt" } +task classDelegation_linkTest(type: LinkKonanTest) { + goldValue = "qxx\n123\n42\n117\nzzz\n" + source = "codegen/classDelegation/linkTest_main.kt" + lib = "codegen/classDelegation/linkTest_lib.kt" +} + task delegatedProperty_simpleVal(type: RunKonanTest) { goldValue = "x\n42\n" source = "codegen/delegatedProperty/simpleVal.kt" @@ -1113,6 +1125,12 @@ task delegatedProperty_delegatedOverride(type: LinkKonanTest) { lib = "codegen/delegatedProperty/delegatedOverride_lib.kt" } +task delegatedProperty_correctFieldsOrder(type: LinkKonanTest) { + goldValue = "qxx\n117\nzzz\nqzz\n" + source = "codegen/delegatedProperty/correctFieldsOrder_main.kt" + lib = "codegen/delegatedProperty/correctFieldsOrder_lib.kt" +} + task delegatedProperty_lazy(type: RunKonanTest) { goldValue = "computed!\nHello\nHello\n" source = "codegen/delegatedProperty/lazy.kt" diff --git a/backend.native/tests/codegen/classDelegation/linkTest_lib.kt b/backend.native/tests/codegen/classDelegation/linkTest_lib.kt new file mode 100644 index 00000000000..6f1ad79dc65 --- /dev/null +++ b/backend.native/tests/codegen/classDelegation/linkTest_lib.kt @@ -0,0 +1,14 @@ +package zzz + +interface I { + fun foo(): Int +} + +open class A : I { + override fun foo() = 42 +} + +open class B : I by A() { + val x = 117 + val y = "zzz" +} \ No newline at end of file diff --git a/backend.native/tests/codegen/classDelegation/linkTest_main.kt b/backend.native/tests/codegen/classDelegation/linkTest_main.kt new file mode 100644 index 00000000000..b9e0f31cac0 --- /dev/null +++ b/backend.native/tests/codegen/classDelegation/linkTest_main.kt @@ -0,0 +1,15 @@ +import zzz.* + +class C : B() { + val a = "qxx" + val b = 123 +} + +fun main(args: Array) { + val c = C() + println(c.a) + println(c.b) + println(c.foo()) + println(c.x) + println(c.y) +} \ No newline at end of file diff --git a/backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_lib.kt b/backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_lib.kt new file mode 100644 index 00000000000..40303cd5957 --- /dev/null +++ b/backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_lib.kt @@ -0,0 +1,7 @@ +package zzz + +open class B { + val z by lazy { "qzz" } + val x = 117 + val zzz = "zzz" +} \ No newline at end of file diff --git a/backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_main.kt b/backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_main.kt new file mode 100644 index 00000000000..dc7bcdf22cd --- /dev/null +++ b/backend.native/tests/codegen/delegatedProperty/correctFieldsOrder_main.kt @@ -0,0 +1,13 @@ +import zzz.* + +class C : B() { + val a = "qxx" +} + +fun main(args: Array) { + val c = C() + println(c.a) + println(c.x) + println(c.zzz) + println(c.z) +} \ No newline at end of file diff --git a/backend.native/tests/codegen/innerClass/linkTest_lib.kt b/backend.native/tests/codegen/innerClass/linkTest_lib.kt new file mode 100644 index 00000000000..065018735cf --- /dev/null +++ b/backend.native/tests/codegen/innerClass/linkTest_lib.kt @@ -0,0 +1,5 @@ +open class A { + open inner class Inner { + val x = 42 + } +} \ No newline at end of file diff --git a/backend.native/tests/codegen/innerClass/linkTest_main.kt b/backend.native/tests/codegen/innerClass/linkTest_main.kt new file mode 100644 index 00000000000..5588ab7ecca --- /dev/null +++ b/backend.native/tests/codegen/innerClass/linkTest_main.kt @@ -0,0 +1,7 @@ +open class B : A() { + open inner class Inner : A.Inner() +} + +fun main(args: Array) { + B().Inner() +} \ No newline at end of file