Bug #732
$! in at_exit
| Status: | Closed | Start date: | ||
|---|---|---|---|---|
| Priority: | High | Due date: | 12/24/2008 | |
| Assignee: | % 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
* 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.
* 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.