Step 24E: frame capture refs

This commit is contained in:
sergeych committed 2026-02-11 20:33:58 +03:00
1 parent c14c7d43d9
commit 99ca15d20f
15 files changed
+547 -173

No files matched your search

@@ -180,6 +180,39 @@ class BytecodeRecentOpsTest {
)
}
@Test
fun lambdaCapturesLocalByReference() = runTest {
eval(
"""
fun make() {
var base = 3
val f = { x -> x + base }
base = 7
return f(1)
}
assertEquals(8, make())
""".trimIndent()
)
}
@Test
fun lambdaCapturesDelegatedLocal() = runTest {
eval(
"""
class BoxDelegate(var v) : Delegate {
override fun getValue(thisRef: Object, name: String): Object = v
override fun setValue(thisRef: Object, name: String, value: Object) { v = value }
}
fun make() {
var x by BoxDelegate(1)
val f = { y -> x += y; return x }
return f(2)
}
assertEquals(3, make())
""".trimIndent()
)
}
@Test
fun delegatedMemberAccessAndCall() = runTest {
eval(