Prettier にコントリビュートした(5)
また Prettier に PR を投げたらマージされました。やったぜ。
解決した Issue
https://github.com/prettier/prettier/issues/6149
bind オペレータのフォーマットについての Issue です。bind オペレータは ECMAScript の標準ではなく、Stage0 のプロポーザルですが、Babel には実装されています。
bind オペレータについては、日本語だと、2 年以上前の記事ですが@shinoutさんのどうなる bind operatorという記事が詳しいかと思います。
今回の Issue についてですが、つぎのような bind オペレータを使ったコードをフォーマットしたときに
new (a::b)();
次のように変換されてしまうというものです。
new a::b();
意味を保つために必要なカッコがはずされてしまうやつですね。
出した PR
https://github.com/prettier/prettier/pull/6152
ざっくりいうと bind オペレータの親ノードがNewExpressionであるときにカッコをつけるという変更をしましたが、ちょっとしたレビューを他の方からいただき、それを元に修正し、テストを書いておしまいです。
感想
ちなみに、bind オペレータに関するバグとして
// Input
f[a::b];
// Output
f[(a::b)];
// Output(Expected)
f[a::b];
というのもあって、そちらはコアメンテナの@duailibeさんが#6159で修正されたみたいです。
そういえば、今日か明日くらいに 1.18 がリリースらしいので、今バージョンに入れられる自分の変更はこれで最後だと思います。もしかしたらコアメンテナさんを覗いたら今回のバージョンの最多コントリビュートかも?
