summaryrefslogtreecommitdiff
path: root/spec/ruby
diff options
context:
space:
mode:
authornagachika <nagachika@ruby-lang.org>2023-07-22 14:01:55 +0900
committernagachika <nagachika@ruby-lang.org>2023-07-22 14:01:55 +0900
commitb97a744a3778abe52fffb051e1460a0a6f7c4a6d (patch)
treeed3958e1170b8671737176040d3b2c41116a1e63 /spec/ruby
parent65d294ad019c8ac5bba12e2c9098360bacafc9e3 (diff)
merge revision(s) 9c94db7cfc584e982a6449b72e58a1cf25024177,fe4d906f5fbacbe6e9267af3bd3503339bad63a9: [Backport #19774]
Add tests for `return` in `BEGIN` and `END` blocks --- spec/ruby/language/return_spec.rb | 15 +++++++++++++++ test/ruby/test_syntax.rb | 1 + 2 files changed, 16 insertions(+) [Bug #19774] Fix segfault at `return` in `END` --- eval_error.c | 7 ++++++- test/ruby/test_syntax.rb | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-)
Diffstat (limited to 'spec/ruby')
-rw-r--r--spec/ruby/language/return_spec.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/spec/ruby/language/return_spec.rb b/spec/ruby/language/return_spec.rb
index 94c15b697e..a62ed1242d 100644
--- a/spec/ruby/language/return_spec.rb
+++ b/spec/ruby/language/return_spec.rb
@@ -435,6 +435,21 @@ describe "The return keyword" do
end
end
+ describe "within BEGIN" do
+ it "is allowed" do
+ File.write(@filename, <<-END_OF_CODE)
+ BEGIN {
+ ScratchPad << "before call"
+ return
+ ScratchPad << "after call"
+ }
+ END_OF_CODE
+
+ load @filename
+ ScratchPad.recorded.should == ["before call"]
+ end
+ end
+
describe "file loading" do
it "stops file loading and execution" do
File.write(@filename, <<-END_OF_CODE)