From: SASADA Koichi Date: 2010-11-15T20:49:31+09:00 Subject: [ruby-dev:42576] Re: Fwd: Modules twice (2010/11/15 17:36), SASADA Koichi wrote: >  仕様がそうなっていたことに依存した実装としているため、そのような仕様で > あるべきである、ということであれば、変更します。 > >  具体的には、super したときに、実際にどのメソッドを呼び出すか、という探 > 索において、同じ Module は 1 度しか現れない、という前提を用いて探索を > 行っています。 > >  しかし、2度登場するとなると、さて super は誰が呼ばれるんだろう? 西山さんに教えてもらったんですが、今でも2重で include 出来ちゃうのです ねぇ。知らなかった(いや、バグ報告にはあったのかもしれないのですが)。 module M def m p "M#m" super end end class C def m p "C#m" super end end class D < C include M def m p "D#m" super end end class C include M end p D.ancestors D.new.m -- // SASADA Koichi at atdot dot net