-
Notifications
You must be signed in to change notification settings - Fork 17
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
make shouldUseOverrideKeyword ignore initialize method #176
make shouldUseOverrideKeyword ignore initialize method #176
Conversation
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.
Un detalle importante es que hay que
- hacer el cambio en wollok-language con el test diferente
- ese test sería bueno que en el initialize haga algo que produzca efecto (para no tener un initialize vacío)
- una vez que se apruebe ese PR, podemos liberar una versión nueva de language
- reapuntamos este PR para subirle la versión a language y ahí va a pasar CI
- se mergea
src/validator.ts
Outdated
@@ -184,7 +184,7 @@ export const shouldOnlyInheritFromMixin = error<Mixin>(node => node.supertypes.e | |||
})) | |||
|
|||
export const shouldUseOverrideKeyword = warning<Method>(node => | |||
node.isOverride || !superclassMethod(node) | |||
!(!node.isOverride && superclassMethod(node) && !['initialize'].includes(node.name)) |
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.
!(!node.isOverride && superclassMethod(node) && !['initialize'].includes(node.name)) | |
node.isOverride || !superclassMethod(node) || ['initialize'].includes(node.name)) |
prefiero que haya menos negación y más aserción
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.
Agree con vos Fer.
Igual para mí las validations se están declarando mal: afirman cuando el programa es correcto, y para mí debería afirmar cuándo quiero que aparezca el error.... no sé, siempre queda incómodo pensar el booleano.
Otra cosa es que nombre del método debe ser initialize
(no incluir), y ese string ya debería estar en algún lado (la VM llama al método cada vez que instancia un objeto), tratemos de usar esa.
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.
Ahh ahí vi que el includes
es sobre una lista, okkk!
Por qué no usar ==
? Igual yo esperaría que ya haya una función isInitialize
🤔
Groso @juanbono ! Es medio una paja todo el ciclo, pero ahí te lo dejé escrito. Por otra parte, no hay un NotExpect, al menos no por ahora. Con que no falle estaríamos bien, salvo que @nscarcella haya desarrollado algo. Cualquier cosa chiflame. |
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.
Ahí agregué otra cosa al comentario de Fer.
No hay un @NotExpect
, los tests del validador fallan si se produce un error en un nodo que no tiene @Expect
así que va a funcionar igual.
PEROOOO si lo querés dejar como documentación (cosa que me parece maravillosa) podés simplemente agregarlo! El test debería ignorar esa annotation 😄
src/validator.ts
Outdated
@@ -184,7 +184,7 @@ export const shouldOnlyInheritFromMixin = error<Mixin>(node => node.supertypes.e | |||
})) | |||
|
|||
export const shouldUseOverrideKeyword = warning<Method>(node => | |||
node.isOverride || !superclassMethod(node) | |||
!(!node.isOverride && superclassMethod(node) && !['initialize'].includes(node.name)) |
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.
Agree con vos Fer.
Igual para mí las validations se están declarando mal: afirman cuando el programa es correcto, y para mí debería afirmar cuándo quiero que aparezca el error.... no sé, siempre queda incómodo pensar el booleano.
Otra cosa es que nombre del método debe ser initialize
(no incluir), y ese string ya debería estar en algún lado (la VM llama al método cada vez que instancia un objeto), tratemos de usar esa.
…initialize_in_tests_objects_classes
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.
@juanbono me tomé el atrevimiento de hacer los cambios pendientes para mergear y seguir.
Muchas gracias por tus infinitas contribuciones! 🚀 💯
Arregla #123
Este PR modifica la validation ya existente
shouldUseOverrideKeyword
para que no aparezca si el metodo es initialize.El programa que use para testearlo es (PR en wollok-language):
Una pregunta que tengo es, hay algun
NotExpect
? ya que en este caso quiero testear que no aparece la validation.