Native tsc: merge conflict markers after U+2028/U+2029 are not recognized (false TS1109 instead of TS1185)
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
- 62/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ệ
- go, typescript
- Lĩnh vực
- compilers
Hướng nghiên cứu
Lỗi nằm ở isConflictMarkerTrivia trong tsc/internal/scanner/scanner.go, khoảng dòng 2422–2425, nơi nhánh dự phòng đầu dòng giải mã text[:pos-2] thay vì text[:pos]. Hãy bắt đầu bằng cách tái hiện với một U+2028 thực sự đặt trước <<<<<<< HEAD và xác nhận TS1109 xuất hiện thay vì TS1185. Cách sửa là giải mã rune trước đó từ text[:pos]; hoàn thành khi các trường hợp LS và PS báo TS1185 giống như trường hợp đối chứng LF/CR.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
🔎 Search Terms
merge conflict marker, TS1185, isConflictMarkerTrivia, U+2028, U+2029, line separator, paragraph separator, UTF-8
🕗 Version & Regression Information
- This changed between classic TypeScript 5.9.3 and native
tsc7.1.0-dev - Verified on current
main(Go / tsgo) - Markers after LF/CR still work; only LS/PS break recognition
⏯ Playground Link
N/A (needs a literal U+2028 / U+2029 in the source)
💻 Code
export {};
<<<<<<< HEAD
(U+2028 between {}; and <<<<<<<; same with U+2029. Also reproduces with ======= / >>>>>>>.)
tsc file.ts
Control (works on both):
export {};
<<<<<<< HEAD
🙁 Actual behavior
Native tsc treats the markers as ordinary tokens, e.g.:
error TS1109: Expression expected.
(and further cascade errors)
🙂 Expected behavior
Classic 5.9.3:
error TS1185: Merge conflict marker encountered.
Additional information about the issue
Root cause in tsc/internal/scanner/scanner.go (isConflictMarkerTrivia, ~2422–2425):
atLineStart := pos == 0 || stringutil.IsLineBreak(rune(text[pos-1]))
if !atLineStart && pos >= 2 {
prev, _ := utf8.DecodeLastRuneInString(text[:pos-2]) // should be text[:pos]
atLineStart = stringutil.IsLineBreak(prev)
}
After LS (E2 80 A8), text[pos-1] is 0xA8 (not a line break). The fallback decodes text[:pos-2] (ends at E2) instead of the full prior rune. Classic UTF-16 charCodeAt(pos-1) sees 0x2028 correctly.
Fix: utf8.DecodeLastRuneInString(text[:pos]).
Same UTF-8 line-break family as literal U+2028 in regex first-pass scanning.
- Ngôn ngữ chính
- Go
- Star
- 112k
- Fork
- 15.4k
- Merge trung bình
- 3 ngày 1 giờ
- Pull request đã merge (30 ngày)
- 136
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 microsoft/TypeScript
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
microsoft/TypeScript#65290 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Native API: formatDiagnosticsWithColorAndContext drops related information without a file locationCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
microsoft/TypeScript#65087 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
TS7 LSP: documentHighlight returns nothing when the file path contains '@'Có thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mởBug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
microsoft/TypeScript#64758 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Language server (tsc --lsp) exits with code 1 after `shutdown` and `exit`Có thể đã có người làm @rajnish-verma-22172 đã nhận 14 ngày trước. Đang mởBug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
microsoft/TypeScript#64742 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Non-enum CLI options with multiple values separated by comma and space aren't whitespace trimmedCó thể đã có người làm @RyanCavanaugh đã nhận 28 ngày trước. Đang mởBug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
microsoft/TypeScript#64618 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của microsoft/TypeScript
Issue tương tự
-
Routing rule or circuit breaker trip expression with an unknown CEL function hangs daprdCó thể đã có người làm @RaphaelFakhri đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[falco-talon] Setting `podAnnotations` makes the chart fail to renderCó thể đã có người làm @RaphaelFakhri đã nhận hôm nay. Đang mởneeds-kind
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
falcosecurity/charts#1084 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
DataDog/terraform-provider-datadog#4479 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
component/tests needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
NVIDIA/nodewright#967 ·
Maintainer thường phản hồi trong vòng 1 ngày