Bug #20464
openRedundant returns are unreachable in coverage
Description
With the following code:
def meth_return(a)
  return if a
  return
end
If you run coverage on it, it's not possible for it to hit line 3, because there isn't a line event, because the return node was eliminated from the AST before it was compiled. There is a putnil instruction, so it's possible for us to attach a line event for it, but the compiler doesn't today.
        
           Updated by kddnewton (Kevin Newton) over 1 year ago
          Updated by kddnewton (Kevin Newton) over 1 year ago
          
          
        
        
      
      Just for the record in case this gets updated, this PR for the prism compiler (https://github.com/ruby/ruby/pull/10713) is what we have to do to make it work the same way. (It effectively checks if the return is redundant and if it is, disallows it from emitting a line event.)
        
           Updated by mame (Yusuke Endoh) over 1 year ago
          Updated by mame (Yusuke Endoh) over 1 year ago
          
          
        
        
      
      Is this the same issue as #20457?
        
           Updated by kddnewton (Kevin Newton) over 1 year ago
          Updated by kddnewton (Kevin Newton) over 1 year ago
          
          
        
        
      
      It's a little different. In that one the issue is the parser, in this one the issue is the compiler. Even if the node isn't eliminated from the AST, there will still likely need to be a fix in the compiler.
        
           Updated by mame (Yusuke Endoh) over 1 year ago
          Updated by mame (Yusuke Endoh) over 1 year ago
          
          
        
        
      
      If the parser does not remove the NODE_RETURN, the compiler can detect the line event, so I think it will be automatically fixed. In fact, I tried nobu's patch and it fixed this problem on my machine.
        
           Updated by mame (Yusuke Endoh) over 1 year ago
          Updated by mame (Yusuke Endoh) over 1 year ago
          
          
        
        
      
      - Related to Bug #20457: Final `return` is eliminated from the AST added
        
           Updated by kddnewton (Kevin Newton) over 1 year ago
          Updated by kddnewton (Kevin Newton) over 1 year ago
          
          
        
        
      
      In that case this can probably be closed.