Printed quotations show a struct tuple as `NewTuple`
Maintainer thường phản hồi trong vòng 3 ngày
Chưa có ai nhận issue này.
Đá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
- 72/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- fsharp
- Lĩnh vực
- developer-experience
Hướng nghiên cứu
Bắt đầu bằng cách tìm mã của quotation printer và các bài kiểm thử trong kho lưu trữ F#; issue không nêu tên tệp hay bài kiểm thử nào. Tái hiện bằng hai quotation printfn "%A" được cung cấp và kiểm tra cách NewTuple được in bên cạnh Patterns.NewStructTuple. Hoàn tất khi struct tuple được in thành NewStructTuple (Value (1), Value ("a")), còn reference tuple vẫn được in thành NewTuple.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Expr.ToString () and %A print the construction of a struct tuple exactly like the construction of a reference tuple, so a printed quotation does not show which tuple kind it builds.
Repro steps
printfn "%A" <@ struct (1, "a") @>
printfn "%A" <@ (1, "a") @>
Expected behavior
The struct tuple prints with the name of its active pattern and constructor (#8193): NewStructTuple (Value (1), Value ("a")).
Actual behavior
Both lines print NewTuple (Value (1), Value ("a")). Only Expr.Type tells them apart. Patterns.NewStructTuple matches the first quotation only, so the printer is the one place that hides the difference.
This matters for code that rewrites quotations: Expr.NewTuple always builds System.Tuple, so a rewrite that rebuilds a struct tuple with it changes the type of the tree, and a test that compares printed quotations cannot catch that.
Known workarounds
Compare Expr.Type (IsValueType) instead of the printed text.
Related information
- FSharp.Core 10.1.0.0, .NET SDK 10.0.402 (
dotnet fsi), Windows 11
- Ngôn ngữ chính
- F#
- Star
- 4.3k
- Fork
- 881
- Merge trung bình
- 3 ngày 22 giờ
- Pull request đã merge (30 ngày)
- 105
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 dotnet/fsharp
-
`FSharpValue.PreComputeTuplePropertyInfo` reports an out-of-range index for every struct tupleĐang mởBug Needs-Triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
Maintainer thường phản hồi trong vòng 3 ngày
-
Documentation: Array.tryPick code example gives an errorCó thể đã có người làm @T-Gro đã nhận 2 ngày trước. Đang mởArea-XmlDocs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
dotnet/fsharp#20780 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Semantic classification cache for opened documents is never populated (written to the unopened-documents cache)Có thể đã có người làm @xperiandri đã nhận 44 ngày trước. Đang mởNeeds-Triage
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 3 ngày
-
Needs-Triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
dotnet/fsharp#20265 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 3 ngày
-
Bug Needs-Triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 3 ngày
Tất cả issue của dotnet/fsharp
Issue tương tự
-
review-bot
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
Maintainer thường phản hồi trong vòng 1 ngày
-
enhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
autowarefoundation/autoware_carla_scenario#323 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
useFrecencySorting ignores how long ago an item was visited when sortingCó thể đã có người làm @auraseb đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Gentleman-Programming/gentle-ai#5603 ·
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 76/100
Maintainer thường phản hồi trong vòng 1 ngày