Ruby core & stdlibのyardocをそれぞれ生成して読み込むことに生成したが、そこには @return
みたいなタグが書かれているわけではないので、返り値が計算できない。
YARDがRubyのコア機能に対して生成するドキュメントには返り値の情報が含まれていないから、てっきり元々書かれていないのかと思いきや、RDocから生成されているはずの https://docs.ruby-lang.org/en/3.1/Integer.html#method-i-chr を見てみると、情報があるように見える。変換に対応していないだけか?...と思いきや、YARDにlib/yard/parser/c/comment_parser.rbというのがあって、-> true or false
をBooleanに変換するロジックなどを持っていた。
C由来の情報はYARD::Registry.allで取得しようとすると一部欠落する?
C由来のコメントはoverload tagとして表現されていて、tag.tags(:overload).first.tags(:return) とかやると出てくるみたいだった。
Ruby 3.1でRubyのソースコードのRDocのcall-sequenceの書き方に変更があったみたいで、YARD::Parser::C::CommentParserが上手くパースできず、何も情報を抽出できない状態となっていた。Ruby 3.0まではレシーバー無しで記述していたのが、Ruby 3.1からはレシーバー付きで記述するようになり、こうなった模様。
上手くやるには、RDocのパーサーを使ってYARDの情報を生成する、という風に書き換えないといけなさそう。あるいはRuby 3.0以下のソースコードからドキュメントを生成する。本当にRuby 3.0ですべてが上手くパースできるのかは怪しいので、RDocのパーサーを使えないか検討することにも依然として価値があるとは思う。