Actions
Bug #16633
closedTracePoint :line event issue
    Bug #16633:
    TracePoint :line event issue
  
Description
TracePoint.new(:line) do |tp|
  p [tp.lineno, tp.event]
end.enable
def bar
  yield 1
  yield 2
end
def foo
  1 + 1
  bar do |a|
    return a
  end
  1 + 1
end
def foobar
  1 + 1
  puts foo
  1 + 1
end
foobar
[5, :line]
[9, :line]
[16, :line]
[21, :line]
[17, :line]
[18, :line]
[10, :line]
[11, :line]
[6, :line]
[12, :line]
1
[19, :line]
As you can see there is no line event for line #7
        
          
          Updated by ViugiNick (Nickolay Viuginov) over 5 years ago
          
          
        
        
      
      - ruby -v set to 2.3.1-2.7.0
 
        
          
          Updated by mame (Yusuke Endoh) over 5 years ago
          
          
        
        
      
      - Status changed from Open to Rejected
 
In fact, Line 7 is not reachable. The return statement in the block jumps to the callsite of foo.
def bar
  yield 1
  puts "unreachable"
end
def foo
  bar do |a|
    return a # skips the rest of bar, and immediately returns to the callsite of foo
  end
  puts "unreachable too"
end
foo # the callsite of foo
Actions