Step 18: delegated member access in bytecode

This commit is contained in:
sergeych committed 2026-02-09 11:00:29 +03:00
1 parent b2d5897aa8
commit 5305ced89f
4 files changed
+59 -33

No files matched your search

@@ -171,6 +171,30 @@ class BytecodeRecentOpsTest {
)
}
@Test
fun delegatedMemberAccessAndCall() = runTest {
eval(
"""
class ConstDelegate(val v) : Delegate {
override fun getValue(thisRef: Object, name: String): Object = v
}
class ActionDelegate : Delegate {
override fun invoke(thisRef: Object, name: String, args...) {
val list: List = args as List
"Called %s with %d args: %s"(name, list.size, list.toString())
}
}
class C {
val a by ConstDelegate(7)
fun greet by ActionDelegate()
}
val c = C()
assertEquals(7, c.a)
assertEquals("Called greet with 2 args: [hi,world]", c.greet("hi", "world"))
""".trimIndent()
)
}
@Test
fun qualifiedThisValueRef() = runTest {
eval(