Bug #732

$! in at_exit

Added by Yusuke Endoh over 3 years ago. Updated 10 months ago.

[ruby-dev:37046]
Status:Closed Start date:
Priority:High Due date:12/24/2008
Assignee:Koichi Sasada % Done:

100%

Category:-
Target version:1.9.1 Release Candidate
ruby -v:

Description

遠藤です。

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

$ ruby19 -ve 'at_exit { p $! }; raise "foo"'
ruby 1.9.0 (2008-11-09 revision 20163) [i686-linux]
nil
-e:1:in `<main>': 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 method `foo' for
main:Object (NameError)
-e:1:in `<main>': undefined local variable or method `foo' for
main:Object (NameError)

-- 
Yusuke ENDOH <mame@tsg.ne.jp>

Associated revisions

Revision 21086
Added by Koichi Sasada about 3 years ago

* eval.c (get_errinfo): return th->errinfo value if normal errinfo place (dynamic local viriable) is not found. fixes Bug #732 [ruby-dev:37046]. * bootstraptest/test_proc.rb: add a test.

Revision 21086
Added by Koichi Sasada about 3 years ago

* eval.c (get_errinfo): return th->errinfo value if normal errinfo place (dynamic local viriable) is not found. fixes Bug #732 [ruby-dev:37046]. * bootstraptest/test_proc.rb: add a test.

History

Updated by Koichi Sasada about 3 years ago

  • Assignee set to Yukihiro Matsumoto

Updated by Yuki Sonoda about 3 years ago

  • Assignee changed from Yukihiro Matsumoto to Koichi Sasada
  • Priority changed from Low to High
  • Target version set to 1.9.1 Release Candidate

Updated by Yuki Sonoda about 3 years ago

  • Due date set to 12/24/2008

Updated by Koichi Sasada about 3 years ago

 ささだです.

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 `<main>': 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 method `foo' for
> main:Object (NameError)
> -e:1:in `<main>': undefined local variable or method `foo' for
> main:Object (NameError)

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

-- 
// SASADA Koichi at atdot dot net

Updated by Koichi Sasada about 3 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100
Applied in changeset r21086.

Also available in: Atom PDF