Untagged variant accepts @as number literals that are the same JavaScript number
Maintainer thường phản hồi trong vòng 1 ngày
Một pull request liên quan đã được merge.
- #8965 của @cknitt — đã merge
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 77/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript
- Lĩnh vực
- compilers
Hướng nghiên cứu
Đọc quy tắc 6 và các bài kiểm thử của quy tắc này trong compiler/ml/UntaggedVariants.md, sau đó lần theo bước kiểm tra literal trùng lặp vốn so sánh literal theo cách viết. Kiểm tra các trường hợp như 1 và 1.0, cũng như 1 và 4294967297, dựa trên giá trị lúc chạy JavaScript của chúng. Hoàn tất khi các giá trị JavaScript tương đương bị từ chối dưới dạng các trường hợp @as trùng lặp và có bài kiểm thử bao quát những ví dụ này.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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.
- Ngôn ngữ chính
- OCaml
- Star
- 7.5k
- Fork
- 483
- Merge trung bình
- 19 giờ 35 phút
- Pull request đã merge (30 ngày)
- 208
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của rescript-lang/rescript
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
rescript-lang/rescript#9037 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Per-constructor @unboxed is not compared across interfaces or coercionsCó thể đã có người làm @cknitt đã nhận hôm nay. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
rescript-lang/rescript#9038 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
rescript-lang/rescript#9006 · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 70/100
rescript-lang/rescript#8997 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
rescript-lang/rescript#8994 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của rescript-lang/rescript
Issue tương tự
-
Recover inside a parameter listĐang mởenhancement scope:diagnostics scope:syntax
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
-
code: refactoring good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
idris-lang/Idris2#3887 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
backend:X86 generated by fuzzer llvm:globalisel miscompilation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
llvm/llvm-project#235468 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area:codegen backend:cuda backend:hip bug direction:input
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
CrossGL/crosstl#3061 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100