diff --git a/src/Perl6/Actions.pm b/src/Perl6/Actions.pm index 97e2dc689a4..9de5ed8f539 100644 --- a/src/Perl6/Actions.pm +++ b/src/Perl6/Actions.pm @@ -335,7 +335,8 @@ method statement_control:sym($/) { } method statement_control:sym($/) { - make PAST::Op.new( $.ast, :pasttype('return'), :node($/) ); + my $retval := $ ?? $[0].ast !! PAST::Op.new( :name('&Nil') ); + make PAST::Op.new( $retval, :pasttype('return'), :node($/) ); } method statement_control:sym($/) { diff --git a/src/Perl6/Grammar.pm b/src/Perl6/Grammar.pm index 5dc35c11f75..594ba6c2027 100644 --- a/src/Perl6/Grammar.pm +++ b/src/Perl6/Grammar.pm @@ -366,8 +366,7 @@ token statement_control:sym { } token statement_control:sym { - :s - [ || <.panic: 'return requires an expression argument'> ] + :s ? } token statement_control:sym {