Add support for "nonlocal" (capitalized) names, and change how variable lookup works.
Inside a method, all local variable lookup stops at the method boundary. In other words, methods, do not close over outer local variables. If a name is not found inside a method and is lowercase, it's a method on this. If it's capitalized, it's a global variable.
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
var foo = "variable"
|
||||
|
||||
class Foo {
|
||||
foo { "method" }
|
||||
|
||||
method {
|
||||
IO.print(foo)
|
||||
}
|
||||
|
||||
static foo { "class method" }
|
||||
|
||||
static classMethod {
|
||||
IO.print(foo)
|
||||
}
|
||||
}
|
||||
|
||||
(new Foo).method // expect: method
|
||||
Foo.classMethod // expect: class method
|
||||
Reference in New Issue
Block a user