[#92063] [Ruby trunk Misc#15723] Reconsider numbered parameters — zverok.offline@...
Issue #15723 has been updated by zverok (Victor Shepelev).
3 messages
2019/03/31
[ruby-core:91960] [Ruby trunk Bug#15558] Should Exception#exception copy the backtrace?
From:
eregontp@...
Date:
2019-03-23 21:43:16 UTC
List:
ruby-core #91960
Issue #15558 has been updated by Eregon (Benoit Daloze). BTW, MRuby 2.0.0 also copies the backtrace (because it implements Exception#exception as clone + setting the message): ``` $ mruby -e 'begin raise "foo"; rescue => e; c=e.exception "bar"; p c.backtrace; end' ["-e:1"] ``` MRI also clones (with `rb_obj_clone`), but `exc_init` resets the backtrace to `nil`. So should `exc_exception()` just call `rb_ivar_set(exc, id_mesg, argv[0]);` instead of `exc_initialize` (which kind of initializes the object twice)? ---------------------------------------- Bug #15558: Should Exception#exception copy the backtrace? https://bugs.ruby-lang.org/issues/15558#change-77294 * Author: Eregon (Benoit Daloze) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux] * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- Currently it does not on MRI: ``` ruby -e 'begin raise "foo"; rescue => e; c=e.exception "bar"; p c.backtrace; end' nil ``` But it does on JRuby 9.2.5.0 and TruffleRuby 1.0.0-rc11: ``` truffleruby -e 'begin raise "foo"; rescue => e; c=e.exception "bar"; p e.backtrace; end' ["-e:1:in `<main>'"] ``` This means in some cases, code needs about this difference such as in https://github.com/asciidoctor/asciidoctor/blob/41da20a47a8da96966ef3ec1c2f509e07e7920e3/lib/asciidoctor.rb#L1322-L1338 More context in: https://github.com/oracle/truffleruby/issues/1542#issuecomment-456850066 -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>