2016-12-01: crystal docを直したり日記を作ったりした
crystal docを直した
CrystalのBitArrayのドキュメントにおかしい部分があることに気付いていたので眺めていたら、なんかもっと根本的におかしい部分を見付けたので直していた。
例えばBitArrayはEnumerable(Bool)とかIndexable(Bool)をincludeしているのだけど、これがなぜかEnumerable({"T", T})とかIndexable({"T", T})みたいになる。ジェネリククスを継承してるとおかしくなるっぽい。

これは主に、この行が原因、
when GenericInstanceType
type.type_vars
type.type_varsの型はHash(String, Crystal::ASTNode)なんだけど、このメソッド(Crystal::Doc::Type#type_vars)はArray(String)?が返ることが期待されてる。それにも関わらずこのメソッドの返り値を使う部分では型にあまり依存しない処理しかされてないから、そのことがコンパイルエラーにならない、という感じ。
ならその行を直せばいいのかというとそんなに事態は単純でもないのだけど‥‥、説明が面倒になったので次の二つのPull Requestを見てほしい。
- Fix doc of the type inherited from generics class or module
- Fix doc of the type having generic superclass
よくもまあ似たような名前のPull Requestを作るものだ。
他にもArrayLiteral#[]=のドキュメントを追加するPull Requestを出したりした。
日記を作った
上のcrystal docの修正は大体学校でやっていたのだけど、家に帰ってからはずっとこの日記を作っていた。どうしてこんなものを作ったのかというと、昨日ノリと勢いだけでMake Now Just Advent Calendar 2016を作ってしまったので、どこかしらそれを記事を公開していかなければならなくなったからだったりする。
gulpとかをどうしても使いたくなかったので車輪の再発明をしまくった気がする。まあ動いてはいる。
というわけでこの日記をMake Now Just Advent Calendar 2016の1日目の記事ということにしたいと思います。(雑)