定数参照

yarv-dev:797で、定数参照のルールとして、ネストしたmoduleの一番外側(つまりObjectクラス)での参照をスキップして、クラス継承のほうに移っていくことに疑問が出ていた。
これはどうしてスキップしているのかというと、Objectクラスでの参照を先にしてしまうと、クラス継承での参照順位(下位から上位クラスへ)と合わなくなるからだろう。
しかし、例として挙げられている場合の不自然さも理解できる。
一番外側のObjectクラスを単純にスキップするのではなく、一応参照してみた値が、定数参照を開始した位置のmodule自身の値に一致する場合だけは、その値として参照解決させるという仕様すれば良いのかなと思った。
つまり、以下のコードの場合、

class B
end

class C
  p C
  p B
end

p Cの参照に対しては、外側としてのObjectクラスで参照解決して、p Bに対しては、クラス階層上のObjectクラスで参照解決することになる。