In the compiler, when a bare name is encountered inside a class definition and it does not resolve to a local variable or global, emit an implicit `this.` load before the call, enabling getter, setter, and method calls without explicit receiver. Update all benchmark, builtin, and test files to remove redundant `this.` qualifiers, and add comprehensive test suites for implicit receiver behavior across instance, inherited, static, nested, and shadowing scenarios.
13 lines
180 B
Plaintext
13 lines
180 B
Plaintext
class Foo {
|
|
getClosure {
|
|
return fn {
|
|
return toString
|
|
}
|
|
}
|
|
|
|
toString { return "Foo" }
|
|
}
|
|
|
|
var closure = (new Foo).getClosure
|
|
IO.print(closure.call) // expect: Foo
|