Untagged variant accepts @as number literals that are the same JavaScript number
メンテナーはふだん 1 日以内に返信
関連するプルリクエストがすでにマージされています。
- #8965 @cknitt による — マージ済み
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 77/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- javascript
- 領域
- compilers
調査の方向性
compiler/ml/UntaggedVariants.md のルール 6 とそのテストを読み、次に、リテラルを表記で比較する重複リテラルのチェックを追ってください。1 と 1.0、1 と 4294967297 などのケースを、それぞれの JavaScript 実行時の値に照らして確認してください。同等の JavaScript 値が重複した @as ケースとして拒否され、これらの例をカバーするテストが追加されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
An untagged variant accepts two @as number literals that are the same JavaScript number, when they are spelled differently.
@unboxed type t = | @as(1) A | @as(1.0) B
let name = v => switch v { | A => "A" | B => "B" }
@inline(never) let id = x => x
Console.log2(name(B), name(id(B)))
Output: B A. B is the number 1 at run time, so a dispatched B matches A, while the folded name(B) returns "B".
The same holds for @as(1) A | @as(4294967297) B, because int literals are emitted as 32-bit: name(id(B)) returns "A".
Expected: the declaration is rejected, as for two @as(1) cases, because the literals are equal as JavaScript values.
The duplicate-literal check compares literals by spelling. The rule and its tests are in compiler/ml/UntaggedVariants.md (rule 6), in #8952.
- 主要言語
- OCaml
- スター
- 7.5k
- フォーク
- 483
- 平均マージ
- 20時間 7分
- マージ済み PR(30日)
- 227
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
rescript-lang/rescript のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 57/100
rescript-lang/rescript#9063 ·
メンテナーはふだん 1 日以内に返信
-
Formatter moves a line comment in a switch/if/loop operand into the block対応中かも @cknitt が今日担当しました。 オープン
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
rescript-lang/rescript#9060 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
rescript-lang/rescript#9058 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 12/100
rescript-lang/rescript#9044 · コメント 1 件 · リアクション 3 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
rescript-lang/rescript#9006 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
rescript-lang/rescript の issue をすべて見る
似ている issue
-
area:codegen backend:metal bug direction:output
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
メンテナーはふだん 1 日以内に返信
-
JS_SetPropertyInternal2 loses the value when a lazy property on the prototype runs out of memoryオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
quickjs-ng/quickjs#1852 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
manuscript-lang/manuscript#1604 ·
メンテナーはふだん 1 日以内に返信
-
rust testing
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
NekomyaDev/nudge#275 ·
メンテナーはふだん 1 日以内に返信
-
jit: find libvx_cuda_dispatch next to vxc, as the runtime library is対応中かも @hiraditya が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信