Display ancestor's singleton methods in class page#148
Display ancestor's singleton methods in class page#148pocke wants to merge 1 commit intorurema:masterfrom
Conversation
| <%= headline(_("Ancestor Methods")) %> | ||
| <dl> | ||
| <% ancestors.each do |c| | ||
| undefined_methods = @entry.partitioned_entries.undefined |
There was a problem hiding this comment.
@hanachin undefined_methodsって特異メソッドとインスタンスメソッドを区別していないように見えたのですが、合っていますか?
このPRで追加したコードだと継承したインスタンスメソッドを表示するコードをそのまま特異メソッドの方にも持ってきているので、特異メソッドとインスタンスメソッドで同名のメソッドがundefされている場合になにか壊れそうな気がしています。
その辺どうなっているのかよく理解していないので、見てもらえると助かりますー🙏
There was a problem hiding this comment.
このPRで追加したコードだと継承したインスタンスメソッドを表示するコードをそのまま特異メソッドの方にも持ってきているので、特異メソッドとインスタンスメソッドで同名のメソッドがundefされている場合になにか壊れそうな気がしています。
雑にundefinedされたメソッドをひとまとまりにしているので壊れますね。
現状のmasterでも特異メソッドで @undef すると同名のインスタンスメソッドが継承したメソッド一覧から消えてしまいそうな気がします。
修正方針として
partitioned_entriesの中でundefinedでひとまとめにせずに特異メソッドとインスタンスメソッドを分ける- 雑に
undefined_methods.any?の中に「m.instance_method?」なり「m.singleton_method?」のガードを追加する
のどちらかかな、と考えてます。
There was a problem hiding this comment.
特異メソッドとインスタンスメソッドで同名のメソッドがundefされている場合になにか壊れそうな気がしています。
今も壊れてそうなので2の方で直してみました
#150
singleton methodの場合こういう絞りこみが必要そうです
| undefined_methods = @entry.partitioned_entries.undefined | |
| undefined_methods = @entry.partitioned_entries.undefined.select(&:singleton_method?) |
| <% | ||
| end | ||
| end %> | ||
| <% end %> |
There was a problem hiding this comment.
ここはついでの修正で、 </dl>の位置がずれていて継承したメソッドがない時にHTMLが壊れていたので修正しています
Close rurema/doctree#2365
親クラスから継承している特異メソッドを、クラスのページに表示します。
Screenshot
File classの例
before

after
