Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

`@@jsxConfig({version: 3})` silently disables the JSX transform

Đang mở Phù hợp với người mới
#9,132 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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

Mở trong Codespaces

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.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của rescript-lang/rescript

Tất cả issue của rescript-lang/rescript

Issue tương tự

Thêm issue về Compilers

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.