Add a corner case for return

This commit is contained in:
Nobuyoshi Nakada 2023-07-19 12:42:20 +09:00
parent 3211b70545
commit a3a74771f2
No known key found for this signature in database
GPG Key ID: 3582D74E1FEE4465

View File

@ -1412,6 +1412,16 @@ eom
assert_normal_exit('END {return}')
end
def test_return_in_BEGIN_in_eval
# `BEGIN` in `eval` is allowed, even inside a method, and `return`
# from that block exits from that method without `LocalJumpError`.
obj = Object.new
def obj.ok
eval("BEGIN {return :ok}")
end
assert_equal :ok, assert_nothing_raised(LocalJumpError) {obj.ok}
end
def test_syntax_error_in_rescue
bug12613 = '[ruby-core:76531] [Bug #12613]'
assert_syntax_error("#{<<-"begin;"}\n#{<<-"end;"}", /Invalid retry/, bug12613)