Project

General

Profile

Bug #4229

Thread#raise 3rd form arguments ignored

Added by djberg96 (Daniel Berger) over 8 years ago. Updated about 8 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.4.0]
[ruby-core:34014]

Description

=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

Also available in: Atom PDF