microsoft / microsoft/TypeScript

Crash: RangeError: Maximum call stack size exceeded in getNameOfSymbolAsWritten via recursive conditional ReturnType

Đang mở
#63,273 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Bug Domain: check: Type Circularity
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

RangeError: Maximum call stack size exceeded

getNameOfSymbolAsWritten crash

symbolToTypeNode recursion

ReturnType indexed access crash

### 🕗 Version & Regression Information

Versions tested: 5.7.3, 5.8.3, 5.9.3, Nightly, TS7.

### ⏯ Playground Link

https://www.typescriptlang.org/zh/play/?target=7&ts=6.0.0-dev.20260319#code/GYVwdgxgLglg9mABBANggpgCgJQC5EA8AKgHyZwBGAVvkdogLwmJGLoAeU6YAJgM6IAhmACeiAPyIASuiggATmCIiADugJRV6OMGRow6EgG0ADAF1E+EwG4gA

### 💻 Code

```ts
function clone(): (obj: T) => T extends any ? ReturnType[0] : 0;
```

### 🙁 Actual behavior

```
node built/local/tsc.js -noEmit functionOnlyHasThrow_filled_2_unvalidated_mutated_batch6.ts
D:\github\TypeScript\built\local\_tsc.js:123721
throw e;
^

RangeError: Maximum call stack size exceeded
at getTextOfNodeFromSourceText (D:\github\TypeScript\built\local\_tsc.js:13034:37)
at getSourceTextOfNodeFromSourceFile (D:\github\TypeScript\built\local\_tsc.js:13017:10)
at getTextOfNode (D:\github\TypeScript\built\local\_tsc.js:13045:10)
at declarationNameToString (D:\github\TypeScript\built\local\_tsc.js:13854:60)
at getNameOfSymbolAsWritten (D:\github\TypeScript\built\local\_tsc.js:55596:16)
at createAccessFromSymbolChain (D:\github\TypeScript\built\local\_tsc.js:53234:25)
at symbolToTypeNode (D:\github\TypeScript\built\local\_tsc.js:53211:26)
at typeToTypeNodeWorker (D:\github\TypeScript\built\local\_tsc.js:51561:18)
at typeToTypeNodeHelper (D:\github\TypeScript\built\local\_tsc.js:51342:24)
at conditionalTypeToTypeNode (D:\github\TypeScript\built\local\_tsc.js:51640:31)

Node.js v22.19.0
```

### 🙂 Expected behavior

The compiler should not crash.

### Additional information about the issue

_No response_

Hướng dẫn đóng góp

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

Hướng nghiên cứu

Tái hiện lỗi crash bằng ví dụ Playground được liên kết hoặc bằng cách chạy lệnh tsc đã được báo cáo đối với functionOnlyHasThrow_filled_2_unvalidated_mutated_batch6.ts. Truy vết đường dẫn đã được báo cáo qua conditionalTypeToTypeNode, typeToTypeNodeWorker, symbolToTypeNode và getNameOfSymbolAsWritten, sau đó thêm một bài kiểm thử hồi quy cho thấy trường hợp ReturnType đệ quy này hoàn tất mà không crash.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
typescript
Lĩnh vực
compilers
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
48/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.