Top-level return does not execute ensure if the file is loaded pr required
While writing specs for top-level return in https://github.com/ruby/spec/pull/530,
we found an inconsistent behavior:
puts "before begin" begin return ensure puts "within ensure" end puts "after begin"
$ ruby test.rb before begin within ensure $ ruby -r./test.rb -e0 before begin $ ruby -e 'load "test.rb"' before begin
This is inconsistent, I believe ensure should be executed in both cases.
The semantics of top-level return are like raising an exception implicitly caught by load/require and the top-level exception handler, except for this case.
Updated by nobu (Nobuyoshi Nakada) over 4 years ago
- Status changed from Open to Closed