microsoft / microsoft/TypeScript

`symbolToNode` stack overflow when using recursive types and functions with type parameters

Abierto
#63,441 4 comentarios 3 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Bug Domain: check: Type Circularity
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 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_

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza ejecutando tsc sobre la reproducción enlazada y siguiendo la ruta symbolToNode implicada en los tipos y funciones genéricos recursivos. Identifica dónde la conversión recursiva alcanza el límite de la pila de llamadas y, a continuación, verifica que la reproducción compile sin el error Maximum call stack size exceeded en las versiones del compilador afectadas.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
compilers
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.