Backport #621
When to call Class#inherited
| Status: | Closed | Start date: | 10/08/2008 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 100% |
||
| Category: | core | |||
| Target version: | Ruby 1.8.8 |
Description
1.8のバグか1.9のバグかよくわからんのですが、以下のようにClass#inheritedを実行するタイミングが変わっています。
% ruby -ve'
class C
def C.inherited(d)
raise "inherited"
end
end
begin
Class.new C do
raise "new"
end
rescue
p $!
end
'
ruby 1.9.0 (2008-10-08 revision 17576) [x86_64-linux]
#<RuntimeError: inherited>
% ruby -ve'
class C
def C.inherited(d)
raise "inherited"
end
end
begin
Class.new C do
raise "new"
end
rescue
p $!
end
'
ruby 1.8.7 (2008-10-08 revision 17572) [x86_64-linux]
#<RuntimeError: new>
Associated revisions
* object.c (rb_class_initialize): The inherited hook should be run
immediately after a new subclass is created, which is before
evaluating a given block. [Backport #621]
History
Updated by Kouhei Sutou over 3 years ago
[ruby-dev:34639]でまつもとさんが意図的に変えたような発言をしています。 http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/34639 > trunkの方が「よい挙動」であることは確かでしょうね(そう思って > 変えた覚えがある)。1.8も揃えたいのはやまやまですが、互換性の > 問題もあるので適用するかどうかはknuさんにお任せします。 > > でも、放置せざるをえないかな。
Updated by Koichi Sasada about 3 years ago
これ,担当が私になってるんですが,どうしたもんでしょうか.
Updated by Koichi Sasada about 3 years ago
どうしたもんでしょうか. Kouhei Sutou wrote:: > チケット #621 が更新されました。 (by Kouhei Sutou) > > > [ruby-dev:34639]でまつもとさんが意図的に変えたような発言をしています。 > http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/34639 > >> trunkの方が「よい挙動」であることは確かでしょうね(そう思って >> 変えた覚えがある)。1.8も揃えたいのはやまやまですが、互換性の >> 問題もあるので適用するかどうかはknuさんにお任せします。 >> >> でも、放置せざるをえないかな。 > > ---------------------------------------- > http://redmine.ruby-lang.org/issues/show/621 > > ---------------------------------------- > http://redmine.ruby-lang.org > -- // SASADA Koichi at atdot dot net
Updated by Yui NARUSE over 2 years ago
- Category set to core
- Status changed from Open to Assigned
- Assignee changed from Koichi Sasada to Akinori MUSHA
- Target version set to Ruby 1.8.8
- この変更は 1.9 では仕様変更である
- 1.8 での変更は knu さんが判断する
Updated by Akinori MUSHA over 2 years ago
互換性の問題はありますが、これはバグと捉えたい気がします。 生成直後に実行されないのでは、フックとしての機能が毀損されますよね。 ruby_1_8ではrb_class_initializeを「直す」ことにします。
Updated by Akinori MUSHA over 2 years ago
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r25470. Shyouhei, thank you for reporting this issue. Your contribution to Ruby is greatly appreciated. May Ruby be with you.