Actions
Bug #14061
closedTop-level return does not execute ensure if the file is loaded pr required
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.0dev (2017-10-26 trunk 60450) [x86_64-linux]
Backport:
Description
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 7 years ago
- Related to Bug #13844: Toplevel returns should fire ensures added
Updated by nobu (Nobuyoshi Nakada) over 7 years ago
- Status changed from Open to Closed
Applied in changeset trunk|r60590.
compile.c: ensure after return in library toplevel
- compile.c (compile_return): execute ensure clause after toplevel
return even in library toplevel other than the main script.
[ruby-core:83589] [Bug #14061]
test
Actions
Like0
Like0Like0