Refactor `finishBlock` in `wren_compiler.c` to detect single-expression bodies (no newline after `{`) and leave a value on the stack, enabling implicit returns for methods and functions. Add `finishBody` wrapper to handle constructor flag. Update all benchmark and test `.wren` files to remove explicit `return` keywords from getters and single-expression methods, relying on the new implicit return behavior. Remove old `return_null_if_brace.wren` test, add `newline_body.wren`, `newline_in_expression_block.wren`, and `no_newline_before_close.wren` tests for edge cases.
23 lines
327 B
Plaintext
23 lines
327 B
Plaintext
class Outer {
|
|
method {
|
|
IO.print(this) // expect: Outer
|
|
|
|
new Fn {
|
|
IO.print(this) // expect: Outer
|
|
|
|
class Inner {
|
|
method {
|
|
IO.print(this) // expect: Inner
|
|
}
|
|
toString { "Inner" }
|
|
}
|
|
|
|
(new Inner).method
|
|
}.call
|
|
}
|
|
|
|
toString { "Outer" }
|
|
}
|
|
|
|
(new Outer).method
|