deno bundleでcharのような名前の変数とオブジェクトリテラルの短縮表記を併用すると死ぬ
調査続ける気力がないのでメモっておく
多分これswcに直接言ったほうがいいんだろうけどビルドが手元で通らない(方法が分からない)ので気力が湧かない
ドキュメントもふわっとしか書いてないしCIのスクリプト見てもよくわからんし
code:text
deno 1.6.3 (release, x86_64-unknown-linux-gnu)
v8 8.8.294
typescript 4.1.3
調査時のArch Linux上での最新で以下のコードをbundleすると死ぬ
code:typescript
const a = Array.from("hoge").map((char, index) => ({char, index}));
console.log(a);
吐き出されるコードはこうなってる
code:javascript
const a = Array.from("hoge").map((__char, index)=>({
char,
index
})
);
console.log(a);
仮引数部分が__charになっているにも関わらず実際に使われている部分はcharのままなので実行時に落ちる
明示的にchar: charとしてやるとchar: __charに変換されるので死亡は回避できる
原因は多分denoの内部のswcがに書いてある「旧仕様にあった今後の予約キーワード」の部分に出てくる物をスワップしようとするからだと思う