rubyのリポジトリでmake helpするとhelpが出るということをk0kubunさんに教えてもらった。便利。
そして、make cheatsheetの存在をmameさんに教えてもらった。便利。 https://github.com/ruby/ruby/blob/master/doc/make_cheatsheet.md
DelegateClass
で作られたクラスを継承したクラスでinstance_methods
やinstance_method
がうまく動かない問題を直した。
むずかしかった。
rbs prototype runtime
ではメソッドの戻り値がリテラルただ1つだけの時にそれっぽい型を吐くようになっていたのだけど、文が複数あると無条件でuntypedになっていた。
# どう見てもこれはStringを返すメソッドだけど、 # 生成される型定義では戻り値がuntypedになってしまう。 def foo something "foo" end
これは比較的簡単に直せることに気がついたので、直した。
具体的には、return
文に渡る式とメソッド本文の最後の文のunion typeが返るようにした。
RBSで_foo?
やin?
のようなメソッド名がsyntax errorになっていたので直した。
_foo?
はinterface名 + ?
がメソッド名になれていなかったこと、in?
はキーワード+?
がメソッド名になれていなかったことが原因だった。
Active Supportの型を生成して、rbs validate
が通るところまで持っていった。
hash.rbs
の定義が悪いっぽくて、Enumerable
のextension
が作れないっぽいのでIssueを立てた。