-
Notifications
You must be signed in to change notification settings - Fork 29
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
doesNotUseRecursion fix #947
Conversation
Muy bien análisis! Gracias por la mano! Con respecto a los count, qué quieren hacer? Podríamos hacer nuestro propio count que tenga en cuenta los llamados recursivos y que los cuente. Creo que con eso podrían pasar los tests que quedaron comentados. Me imagino algo como: `within ${toEDLString(declaration)} count(calls) + count(calls ${toEDLString(declaration)})` |
app/utils/expectations.js
Outdated
const countWithRecursiveCalling = (declaration) => | ||
`within ${toEDLString(declaration)} count(calls) + count(calls ${toEDLString(declaration)})` | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Debería llamarse countCallsWithin
y adentro tener un comentario que explique este problema
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cargar pregunta/issue en mulang ¿por qué el count(calls) no incluye las recursivas?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🥳
Al final nos dimos cuenta que el problema no era el AST que estabamos generando sino que la expectativa de doesNotUseRecursion.
Por lo que entendemos, esta expectativa:
through `A` ! calls `A`
En este workspace:
El
through
checkea que exista algun scope transitivo al procedimientoA
donde ocurra que no se llama aA
. Esto ocurre en el procedimientoA
, donde no se esta llamando aA
, por lo que la expectativa pasa.Por esto, al poner el not abarcando todo el
through
estamos checkeando lo que queremos, que es que nunca desde el procedimiento se llegue a llamar a A.Respecto al otro caso, que era que las llamadas recursivas no estaban siendo contadas como hacer algo, esto parece ser algo propio de Mulang porque al hacer, por ejemplo,
within `A` count(calls `A`) >= 1
, mulang ahi si detecta las llamadas a del procedimiento a si mismo, pero al hacerwithin `A` count(calls) >= 1
no.