microsoft / microsoft/TypeScript

Parser misinterprets async() calls in conditional expressions as async arrow functions

Đang mở
#64,231 3 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Bug
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

Mở hướng dẫn đóng góp

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.

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

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.