From: Shugo Maeda <redmine@...>
Date: 2011-07-04T15:38:37+09:00
Subject: [ruby-dev:44034] [Ruby 1.9 - Bug #4971][Open] Module#class_variables


Issue #4971 has been reported by Shugo Maeda.

----------------------------------------
Bug #4971: Module#class_variables
http://redmine.ruby-lang.org/issues/4971

Author: Shugo Maeda
Status: Open
Priority: Normal
Assignee: Yukihiro Matsumoto
Category: core
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-06-16 trunk 32113) [i686-linux]


Ruby 1.9だとModule#class_variablesはスーパークラスのクラス変数を返しませんが、仕様でしょうか?

  class Foo
    @@foo = 123
  end
  
  class Bar < Foo
    @@bar = 456
  end
  
  p Bar.class_variables #=> 1.8では["@@bar", "@@foo"], 1.9では[:@@bar]

commit logには

    * variable.c (rb_mod_class_variables): class variables are no longer
      inherited.  [ruby-dev:23808]
    
と書いてあるのですが、当時のクラス変数の仕様って今の1.8とも1.9とも違う
仕様だったりするでしょうか。
Bar.class_variable_get(:@@foo)で値は取れるので、class_variablesで:@@fooを
返してもよい気がするのですが。



-- 
http://redmine.ruby-lang.org