feat: unify block, function, and method body parsing to support single-expression implicit returns

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.
This commit is contained in:
Bob Nystrom
2014-04-03 14:48:19 +00:00
parent de2650b0ba
commit a1365c4183
34 changed files with 1165 additions and 1187 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
class Foo {
new(value) { _value = value }
toString { return _value }
toString { _value }
bar = value {
_value = value
return value
+1 -1
View File
@@ -1,5 +1,5 @@
class Foo {
bar = value { return value }
bar = value { value }
}
var foo = new Foo
+1 -1
View File
@@ -1,5 +1,5 @@
class Foo {
bar = value { return value }
bar = value { value }
}
var foo = new Foo
+1 -1
View File
@@ -1,5 +1,5 @@
class Foo {
bar = value { return value }
bar = value { value }
}
var foo = new Foo
+1 -1
View File
@@ -1,5 +1,5 @@
class Foo {
bar = value { return value }
bar = value { value }
}
var foo = new Foo
+1 -1
View File
@@ -1,5 +1,5 @@
class Foo {
bar = value { return "result" }
bar = value { "result" }
}
var foo = new Foo