feat: add closure test for shadowing closed-over variable with local

Add a new test case `shadow_closure_with_local.wren` that verifies a closed-over
variable can be shadowed by a local variable in an inner scope within the same
closure. The test ensures that the outer closure variable retains its value
outside the inner scope after the shadowing local goes out of scope.

Also remove an incomplete TODO comment from `reuse_closure_slot.wren` and add
a detailed TODO comment in `wren_compiler.c` discussing the design trade-off
between treating capitalized names as globals versus implicit `this` calls
when walking the scope chain.
This commit is contained in:
Bob Nystrom
2014-04-20 00:48:06 +00:00
parent 963773ecbc
commit e665d4a9d3
3 changed files with 19 additions and 1 deletions
-1
View File
@@ -15,4 +15,3 @@
}
// TODO: Maximum number of closed-over variables (directly and/or indirect).
// TODO: Shadow variable used in closure.
@@ -0,0 +1,11 @@
{
var foo = "closure"
new Fn {
{
IO.print(foo) // expect: closure
var foo = "shadow"
IO.print(foo) // expect: shadow
}
IO.print(foo) // expect: closure
}.call
}