there's no way to pass backtrace locations as a massaged backtrace
When re-raising exceptions, it is sometimes useful to "massage" the backtrace (especially in DSLs).
There is currently no way to do it using only backtrace locations. This causes the new exception to have #backtrace_locations return nil, and thus makes backtrace_locations unreliable as a whole.
def test raise ArgumentError, "", caller_locations end begin test rescue ArgumentError => e p e.backtrace_locations end
attempting to pass
Kernel#raise in the
test method fails with
bla.rb:2:inset_backtrace': backtrace must be Array of String (TypeError)`