Project

General

Profile

Backport #4229

Updated by jeremyevans0 (Jeremy Evans) almost 5 years ago

=begin 
  
  It seems that at one point the Thread#raise method was documented to accept an array as the 3rd argument. As it stands now it appears to accept either a string or an array. But, if an array is provided, only the first argument is used. I think this ties back to the code in rb_make_exception in eval.c. For example: 
 
      thread = Thread.new{ sleep } 
      Thread.pass until thread.status == 'sleep' 
      thread.raise(NameError, 'hello', ['foo', 'bar', 'baz']) 
 
      begin 
        thread.join 
      rescue NameError => err 
        puts err.to_s 
        puts err.backtrace.join("\n") 
      end 
 
  The result is: 
 
      hello 
      foo 
      test.rb:8:in `join' 
      test.rb:8 
 
  Note that 'bar' and 'baz' were apparently dropped from any part of the backtrace. 
 
  Can you please clarify the spec? 
 
 =end 
 

Back