microsoft / microsoft/TypeScript
`symbolToNode` stack overflow when using recursive types and functions with type parameters
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
### 🔎 Search Terms
"symbolToNode", "stack overflow", "Maximum call stack size exceeded"
### 🕗 Version & Regression Information
This is happening in v5, v6, and tsgo (I didn't check prior versions)
### ⏯ Playground Link
_No response_
### 💻 Code
Coming from https://github.com/typescript-eslint/typescript-eslint/issues/11947, I created a reproduction that's agnostic to ESLint:
```ts
export interface CustomNode
{
getNextNode: () => CustomNode
;
}
export declare const createNode: () => {
getNextNode: () => CustomNode;
};
function wrapNode(getNode: () => CustomNode) {
// ...
// Wrapping logic here
// ...
return getNode;
}
wrapNode(() => {
const node = createNode();
return wrapNode>(node.getNextNode);
});
```
Full Repro and more details: https://github.com/StyleShit/repros/tree/main/ts-symbolToNode-stack-overflow
### 🙁 Actual behavior
Running `tsc` is failing with "Maximum call stack size exceeded" error
### 🙂 Expected behavior
Running `tsc` should not fail
### Additional information about the issue
_No response_
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par exécuter tsc sur la reproduction liée et suivre le chemin symbolToNode impliqué dans les types et fonctions génériques récursifs. Identifiez l’endroit où la conversion récursive atteint la limite de la pile d’appels, puis vérifiez que la reproduction se compile sans l’erreur Maximum call stack size exceeded avec les versions du compilateur concernées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- compilers
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100