microsoft / microsoft/TypeScript

Crash: RangeError: Maximum call stack size exceeded during contextual typing of object literal with yield in computed property name

Aperta
#62,941 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Bug Domain: check: Contextual Types Help Wanted
Lingua principale
Go
Stelle
111k
Fork
14.3k
Merge medio
2g 4h
PR unite (30g)
132

Descrizione

### 🔎 Search Terms

RangeError: Maximum call stack size exceeded

checkYieldExpression recursion

getContextualTypeForObjectLiteralElement crash

Computed property name generator yield

### 🕗 Version & Regression Information

Versions tested: 5.7.3, 5.8.3, 5.9.3, Nightly
Behavior: All tested versions crash.
Precondition: Only crashes when the variable has an explicit type annotation (e.g., : any).
Comparison: let x = { ... } (inference) does not crash; let x: any = { ... } (contextual typing) crashes.

### ⏯ Playground Link

https://www.typescriptlang.org/zh/play/?target=2&ts=6.0.0-dev.20251231#code/GYVwdgxgLglg9mAVAAgOYAoCUyDeAoZQ5AGwFMpkAPALgEMwBPZAXlwKI8QG0GZTiAJsgAMAXSxsOHAL7tC0gNx5pQA

### 💻 Code

```ts
function* g() {
// The explicit ': any' is required to trigger the crash
let x:any = {
*[yield 0]() {
}
};
}
```

### 🙁 Actual behavior

```
.\ts-versions\nightly\node_modules\.bin\tsc.cmd C:\Users\aw\Desktop\itr\result0\mutated\generatorTypeCheck43_mutated_iter7.ts
D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:123181
throw e;
^

RangeError: Maximum call stack size exceeded
at hasSyntacticModifier (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:16878:30)
at getFunctionFlags (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:15771:11)
at checkYieldExpression (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:80294:27)
at checkExpressionWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:80953:16)
at checkExpression (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:80809:32)
at getContextualTypeForObjectLiteralElement (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:73061:28)
at getContextualTypeForObjectLiteralMethod (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:73044:12)
at getApparentTypeOfContextualType (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:73260:58)
at getContextualSignature (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:73692:18)
at getContextualSignatureForFunctionLikeDeclaration (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:73684:87)

Node.js v22.19.0
```

### 🙂 Expected behavior

The compiler should not crash.

### Additional information about the issue

_No response_

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia con l’esempio TypeScript ridotto e i percorsi del compilatore indicati nello stack trace: checkYieldExpression, getContextualTypeForObjectLiteralElement, getContextualTypeForObjectLiteralMethod e getContextualSignature. Esegui la riproduzione con l’annotazione any esplicita, quindi confrontala con la tipizzazione inferita. Il lavoro è completato quando il compilatore non segnala alcuno stack overflow per il caso del generatore con proprietà calcolata.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript
Ambito
compilers
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.