`@@jsxConfig({version: 3})` silently disables the JSX transform
Maintainer thường phản hồi trong vòng 1 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
- 74/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ệ
- ocaml
- Lĩnh vực
- compilers
Hướng nghiên cứu
Đọc compiler/syntax/src/jsx_ppx.ml, đặc biệt là phần xử lý phiên bản của @@jsxConfig ở dòng 53–56 và các bước kiểm tra biến đổi ở dòng 107 và 124. Trước tiên, hãy kiểm tra phần xác thực lân cận và các bài kiểm tra cấu hình JSX. Bổ sung kiểm thử cho thấy phiên bản không được hỗ trợ, chẳng hạn như 3, sẽ báo lỗi tại trường version; công việc hoàn tất khi cấu hình không hợp lệ không còn khiến JSX âm thầm không được biến đổi.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
@@jsxConfig accepts any version and stores it without checking (compiler/syntax/src/jsx_ppx.ml:53-56). The transform only runs when the version is 4 (jsx_ppx.ml:107, :124). Any other value, e.g. a leftover version: 3 from the JSX v3 days, silently turns the JSX transform off for the rest of the file. There is no error or warning.
@@jsxConfig({version: 3})
module C = {
@react.component
let make = () => React.null
}
let x = <div />
bsc -bs-jsx 4 -dsource on master (6ea63e5a91) shows the file untransformed: make keeps its @react.component attribute, there is no props type, and <div /> stays a JSX node. With version: 4, the same file is transformed as expected (type props, React.component, ReactDOM.jsx).
Expected: an error for unsupported JSX versions (only 4 exists since v11/v12), pointing at the version field. JSX v3 support is gone, so this should not fall through to an untransformed AST.
Possibly related cleanup: since only v4 remains, Jsx_common.version could become an enabled flag, and the no-op -bs-jsx-mode flag could go in v13.
- Ngôn ngữ chính
- OCaml
- Star
- 7.5k
- Fork
- 484
- Merge trung bình
- 21 giờ 9 phút
- Pull request đã merge (30 ngày)
- 255
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 74/100
rescript-lang/rescript#9135 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Printed type declarations drop @tag, @notUndefined and runtime annotationsCó thể đã có người làm @cknitt đã nhận hôm nay. Đang mở
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 25/100
rescript-lang/rescript#9134 ·
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#9130 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 55/100
rescript-lang/rescript#9122 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Dev dependencies interactingCó thể đã có người làm @CarlOlson đã nhận 2 ngày trước. Đang mở
Độ khó 4/5 1-2 ngày Mức phù hợp với người mới 25/100
rescript-lang/rescript#9089 · 1 bình luận ·
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ự
-
Độ 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 4 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
CanadaHonk/porffor#426 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
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 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
compiler-rt:asan llvm:transforms
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
llvm/llvm-project#236682 ·
Maintainer thường phản hồi trong vòng 1 ngày