microsoft / microsoft/TypeScript
Parser misinterprets async() calls in conditional expressions as async arrow functions
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Go
- Star
- 111k
- Fork
- 14.3k
- Merge trung bình
- 2 ngày 4 giờ
- Pull request đã merge (30 ngày)
- 132
Mô tả
### 🔎 Search Terms
parser, async, conditional
### 🕗 Version & Regression Information
- This is the behavior in every version I tried
### ⏯ Playground Link
_No response_
### 💻 Code
```ts
const a = true;
const b = 1;
function async(): number {
return b;
}
const first = a ? async() : 0;
// TS1005: '=>' expected.
const second = a ? async() : x => x;
// TS1005: ':' expected.
```
### 🙁 Actual behavior
The parser appears to interpret async() as the beginning of an async arrow function and the conditional separator as a return-type annotation.
The first case also produces a syntax diagnostic when parsed as JavaScript after removing the : number annotation. Node accepts and executes that JavaScript equivalent
### 🙂 Expected behavior
Both conditional expressions should parse successfully. async() is a call to the function named async, and the following colon separates the conditional’s branches.
### Additional information about the issue
Oxc fix: https://github.com/oxc-project/oxc/pull/26537
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.
Hướng nghiên cứu
Bắt đầu bằng cách tái hiện hai ví dụ về biểu thức điều kiện trong parser TypeScript và so sánh cách async() được phân loại so với một hàm mũi tên async. Sử dụng bản sửa lỗi Oxc được liên kết làm tham chiếu cho hành vi phân tích cú pháp liên quan. Được xem là hoàn tất khi cả hai ví dụ đều được phân tích cú pháp thành công mà không có các chẩn đoán đã báo cáo, với độ bao phủ hồi quy cho các trường hợp được minh họa.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- javascript, typescript
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Sôi nổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 68/100