Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filtering wollok base frames from stack trace & adding constants #172

Merged
merged 4 commits into from
Oct 2, 2023

Conversation

fdodino
Copy link
Contributor

@fdodino fdodino commented Oct 1, 2023

La idea es resolver este issue que está cargado para wollok-ts-cli.

Este PR viene de la mano de este otro PR, donde acá

  • filtro los frames asociados con el fully qualified name (wollok.) . Esto es algo que ya se hacía en Wollok Xtext y que se implementó para wollok-cli que usa Java.
  • agregué de paso un archivo constants.ts donde la idea es poder seguir metiendo cosas ahí.

Me encantaría poder filtrar el stack trace de Typescript (es gracioso que en Wollok Xtext pasaba a veces con el stack trace de Java), pero la verdad es que es muy raro como WollokException implementa un get message(): string que arma todo el stack trace pero al final se le agrega el stack trace de TS de zopetón.

Update: hablando con NicoS, ahí entendí que WollokException hereda de Error, que es el objeto estándar de JS, que lamentablemente modela el stack como un string y no como una pila de mensajes evaluados como esperaría. Tratar de manipular eso es medio complicado dado que hay que interpretar el string por un lado y por otro hay que tratar de que se pueda seguir debuggeando la VM. Esta solución de compromiso para mí

  1. resuelve el problema (necesita de un ayudín de wollok-ts-cli)
  2. y permite que se pueda seguir debuggeando errores falopa de la VM...

Copy link
Contributor

@PalumboN PalumboN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahí dejé una duda pero el resto va como ñapi 👊

src/constants.ts Show resolved Hide resolved
@@ -11,7 +11,8 @@ const lang: Natives = {
Exception: {
*initialize(self: RuntimeObject): Execution<void> {
const stackTraceElements: RuntimeObject[] = []
for(const frame of this.frameStack.slice(0, -1)){
const customFrames = this.frameStack.slice(0, -1).filter(frame => frame.isCustom())
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Esto decís que ya se hacía en Xtext, yo no me acordaba.

Pero entonces si el código del estudiante llama a algo de wollok (como un filter), esa llamada no se muestra en el stack?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

el filter no (y me parece que está bien), lo que se ve es código del alumne:

image

(lo de volar el código de Wollok fue un pedido de Passerini y con el diario del lunes estoy de acuerdo)

@fdodino fdodino merged commit e315da7 into master Oct 2, 2023
2 checks passed
@fdodino fdodino deleted the stack-trace-enhancements branch October 2, 2023 20:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants