Actions
Bug #13369
closedTracePoint gives incorrect `return_value` after rescuing error when using `return`
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
Backport:
Description
In the following example
class Foo
MyError = Class.new(StandardError)
def example1
norf
rescue MyError => error
2
end
def example2
norf
rescue MyError => error
return 2
end
def norf
raise MyError
end
end
trace = TracePoint.new(:return) do |tp|
puts "#{tp.defined_class}##{tp.method_id} RETURNS #{tp.return_value.inspect}"
end
trace.enable
Foo.new.example1 # => 2
puts
Foo.new.example2 # => 2
# >> Foo#norf RETURNS nil
# >> Foo#example1 RETURNS 2
# >>
# >> Foo#norf RETURNS nil
# >> Foo#example2 RETURNS nil
Both example1
AND example2
return 2. For some reason though, the tracepoint event for example2
says that it returns nil
.
Files
Actions
Like0
Like0Like0Like0Like0Like0Like0