初めまして、神谷と申します。


<状況>
ruby 1.9.3p0 で、private_constantが次の挙動を取りました。

class My
  C1 = 1
  C2 = 2

  private_constant :C1, :C2

  C3 = 3

  private_constant

  C4 = 4
end

p My.constants #=> [:C2, :C3, :C4]
p My::C1       #=> in `<main>': private constant My::C1 referenced (NameError)
p My::C2       #=> 2
p My::C3       #=> 3
p My::C4       #=> 4



<質問>
この動きは、仕様通りと考えてよろしいでしょうか?
引数として受け取る以上、C2もprivateになってほしいなと感じました。
C4に関してはどちらもありうると思うのですが、個人的にはこっちもprivateになってほしいかなと
↓こんなイメージです。

p My.constants #=> [:C3]
p My::C1       #=> in `<main>': private constant My::C1 referenced (NameError)
p My::C2       #=> in `<main>': private constant My::C2 referenced (NameError)
p My::C3       #=> 3
p My::C4       #=> in `<main>': private constant My::C4 referenced (NameError)

既に出ていたり、ruby-dev側が望ましい話題であれば申し訳ありません。

-- 
神谷 健一