Project

General

Profile

Actions

Bug #732

closed

$! in at_exit

Added by mame (Yusuke Endoh) over 12 years ago. Updated almost 10 years ago.

Status:
Closed
Priority:
Normal
ruby -v:
Backport:
[ruby-dev:37046]

Description

=begin
遠藤です。

at_exit の中で $! が参照できません。

$ ruby19 -ve 'at_exit { p $! }; raise "foo"'
ruby 1.9.0 (2008-11-09 revision 20163) [i686-linux]
nil
-e:1:in `': foo (RuntimeError)

スタックトレースを自分で整形して表示したいときに、1.8 の挙動の方が
便利です。
また、同じ動機で、$! = nil もやっぱり許可して欲しいです。

ちなみに、at_exit の中で raise すると本体が投げた例外を再度投げます
(投げるように見えます) 。これは不自然だと思います。

$ ruby19 -ve 'at_exit { raise }; foo'
ruby 1.9.0 (2008-11-09 revision 20163) [i686-linux]
-e:1:in <main>': undefined local variable or methodfoo' for
main:Object (NameError)
-e:1:in <main>': undefined local variable or methodfoo' for
main:Object (NameError)

--
Yusuke ENDOH mame@tsg.ne.jp
=end

Actions #1

Updated by ko1 (Koichi Sasada) over 12 years ago

  • Assignee set to matz (Yukihiro Matsumoto)

=begin

=end

Actions #2

Updated by yugui (Yuki Sonoda) over 12 years ago

  • Assignee changed from matz (Yukihiro Matsumoto) to ko1 (Koichi Sasada)
  • Priority changed from 3 to 5
  • Target version set to 1.9.1 Release Candidate

=begin

=end

Actions #3

Updated by yugui (Yuki Sonoda) over 12 years ago

  • Due date set to 12/24/2008

=begin

=end

Actions #4

Updated by ko1 (Koichi Sasada) over 12 years ago

=begin
 ささだです.

Yusuke ENDOH wrote::

at_exit の中で $! が参照できません。

$ ruby19 -ve 'at_exit { p $! }; raise "foo"'
ruby 1.9.0 (2008-11-09 revision 20163) [i686-linux]
nil
-e:1:in `': foo (RuntimeError)

スタックトレースを自分で整形して表示したいときに、1.8 の挙動の方が
便利です。
また、同じ動機で、$! = nil もやっぱり許可して欲しいです。

 これ,先日の開発者ミーティングのメモを見たんですが,

  • Bug #732 [ruby-dev:37046]:
    • (1) 参照はできるようにする
    • (2) nil にする -> 優先度は低い.at_exit より前につぶすべき

となってました.とりあえず $! で見えるようにするのが急務ですかねぇ.代入
は出来るようにするかはわかりません.

ちなみに、at_exit の中で raise すると本体が投げた例外を再度投げます
(投げるように見えます) 。これは不自然だと思います。

$ ruby19 -ve 'at_exit { raise }; foo'
ruby 1.9.0 (2008-11-09 revision 20163) [i686-linux]
-e:1:in <main>': undefined local variable or methodfoo' for
main:Object (NameError)
-e:1:in <main>': undefined local variable or methodfoo' for
main:Object (NameError)

 こっちは議論してなかったような気がしますが,これはあからさまに変だ
なぁ,と思うのでなおします.

--
// SASADA Koichi at atdot dot net

=end

Actions #5

Updated by ko1 (Koichi Sasada) over 12 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r21086.
=end

Actions

Also available in: Atom PDF