From: usa@... Date: 2017-08-09T10:44:04+00:00 Subject: [ruby-core:82304] [Ruby trunk Bug#13369] TracePoint gives incorrect `return_value` after rescuing error when using `return` Issue #13369 has been updated by usa (Usaku NAKAMURA). Backport changed from 2.2: WONTFIX, 2.3: REQUIRED, 2.4: DONE to 2.2: WONTFIX, 2.3: DONE, 2.4: DONE ruby_2_3 r59547 merged revision(s) 58262,58263. ---------------------------------------- Bug #13369: TracePoint gives incorrect `return_value` after rescuing error when using `return` https://bugs.ruby-lang.org/issues/13369#change-66098 * Author: backus (John Backus) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16] * Backport: 2.2: WONTFIX, 2.3: DONE, 2.4: DONE ---------------------------------------- In the following example ```ruby 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-------------------------------- tracepoint-bug-example.rb (529 Bytes) diff.patch (1.29 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: