uqbar-project / wollok-ts

TypeScript based Wollok language implementation
GNU General Public License v3.0
20 stars 13 forks source link

Llamada recursiva con error en TS #230

Open Juancete opened 5 months ago

Juancete commented 5 months ago

Al ejecutar el siguiente código de este método

method comer(cantidad) {
 self.comer(cantidad)
 self.volar(1)
}

El error que arroja es

Evaluation Error! wollok.lang.StackOverflowException wrapping TypeScript RangeError: Maximum call stack size exceeded

El error que debería arrojar tendría que ser propio de Wollok.

PalumboN commented 1 month ago

@Juancete pero eso no es una StackOverflowException propia de Wollok?

En la prueba el stack trace es como lo imaginaba:

wollok:pepita> pepita.comer(1)
✗ Evaluation Error!
  wollok.lang.StackOverflowException wrapping TypeScript RangeError: Maximum call stack size exceeded
    at src.pepita.pepita.comer(cantidad) [src/pepita.wlk:4]
    at src.pepita.pepita.comer(cantidad) [src/pepita.wlk:4]
    at src.pepita.pepita.comer(cantidad) [src/pepita.wlk:4]
    at src.pepita.pepita.comer(cantidad) [src/pepita.wlk:4]
    ...

Lo que entiendo que molesta es el wrapping TypeScript RangeError: Maximum call stack size exceeded, no?

Eso debería ser fácil de tocar, porque se pregunta acá: https://github.com/uqbar-project/wollok-ts/blob/ddd7ed35970fc8c44e6d4133d506fde6092b0de7/src/interpreter/runtimeModel.ts#L378-L382

Pero quiero estar seguro de cuál es el mensaje que nos gustaría mostrar 🤓

Juancete commented 1 month ago

Hola @PalumboN

Si, saltó durante una explicación de manejo de errores. el "wrapping TypeScript RangeError" sonaba turbio para los pibes que no tenían idea de qué hay atrás del lenguaje. Me parece que cuanto más oculto queda el detalle de implementación para quienes están iniciando en el tema es más claro. Igualmente es una opinión propia pero todo es discutible. Si nos es útil para trazar errores lo dejamos tal como está.