diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 9e4718c1854..701e62396a8 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -613,6 +613,13 @@ task delegatedProperty_local(type: RunKonanTest) { source = "codegen/delegatedProperty/local.kt" } +task delegatedProperty_delegatedOverride(type: LinkKonanTest) { + goldValue = "156\nx\n117\n42\n" + source = "codegen/delegatedProperty/delegatedOverride_main.kt" + lib = "codegen/delegatedProperty/delegatedOverride_lib.kt" +} + + task array0(type: RunKonanTest) { goldValue = "5\n6\n7\n8\n9\n10\n11\n12\n13\n" source = "runtime/collections/array0.kt" diff --git a/backend.native/tests/codegen/delegatedProperty/delegatedOverride_lib.kt b/backend.native/tests/codegen/delegatedProperty/delegatedOverride_lib.kt new file mode 100644 index 00000000000..0aceea0ffdd --- /dev/null +++ b/backend.native/tests/codegen/delegatedProperty/delegatedOverride_lib.kt @@ -0,0 +1,23 @@ +package a + +import kotlin.reflect.KProperty + +open class A { + open val x = 42 +} + +class Delegate { + val f = 117 + operator fun getValue(receiver: Any?, p: KProperty<*>): Int { + println(p.name) + return f + } +} + +open class B: A() { + override val x: Int by Delegate() + + fun bar() { + println(super.x) + } +} \ No newline at end of file diff --git a/backend.native/tests/codegen/delegatedProperty/delegatedOverride_main.kt b/backend.native/tests/codegen/delegatedProperty/delegatedOverride_main.kt new file mode 100644 index 00000000000..ba4fadc4e25 --- /dev/null +++ b/backend.native/tests/codegen/delegatedProperty/delegatedOverride_main.kt @@ -0,0 +1,17 @@ +import a.* + +open class C: B() { + override val x: Int = 156 + + fun foo() { + println(x) + + println(super.x) + bar() + } +} + +fun main(args: Array) { + val c = C() + c.foo() +} diff --git a/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy b/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy index 55767258bf4..339dd5fd07a 100644 --- a/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy +++ b/buildSrc/src/main/groovy/org/jetbrains/kotlin/KonanTest.groovy @@ -186,7 +186,7 @@ class RunInteropKonanTest extends KonanTest { } @ParallelizableTask -class LinkKonanTest extends KonanTest { +class LinkKonanTestNoStdlib extends KonanTest { protected String lib void compileTest(List filesToCompile, String exe) { @@ -198,6 +198,19 @@ class LinkKonanTest extends KonanTest { } } +@ParallelizableTask +class LinkKonanTest extends KonanTest { + protected String lib + + void compileTest(List filesToCompile, String exe) { + def libDir = project.file(lib).absolutePath + def libBc = "${libDir}.bc" + + runCompiler(lib, libBc, ['-nolink']) + runCompiler(filesToCompile, exe, ['-library', libBc]) + } +} + @ParallelizableTask class RunExternalTestGroup extends RunKonanTest {