Opened 15 years ago
Closed 15 years ago
#741 closed defect (fixed)
Working with Classes defined in NameBlocks
Reported by: | Owned by: | Víctor de Buen Remiro | |
---|---|---|---|
Priority: | highest | Milestone: | OOP Implementation |
Component: | OOP | Version: | |
Severity: | blocker | Keywords: | |
Cc: |
Description
También en el uso de clases es conveniente definir el código dentro de un espacio de nombres para que éstos no entren en conflicto con otras variables y dándole modularidad.
Al usar las clases dentro de un NameBlock se encuentran algunos problemas:
- Las clases han de ser citadas con su nombre completo dentro del NameBlock que la contiene. Esto no debería ser necesario.
- Se encuentran errores al citar las clases dentro de bucles.
Véase el archivo adjunto.
Attachments (1)
Change History (10)
Changed 15 years ago by
Attachment: | ticket_11.ClassesInNameBlocks.tol added |
---|
comment:1 Changed 15 years ago by
Status: | new → accepted |
---|
comment:2 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
This feature has been added at release v2.0.1 b.0.14.alpha
comment:3 Changed 15 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
comment:4 Changed 15 years ago by
Severity: | critical → blocker |
---|
En el desarrollo del proyecto para gestionar modelos (MMS) nos encontramos con la dificultad de tener nombres de clases muy habituales Input, Output, Combination,...
Estos nombres entran en conflicto con otras variables y funciones definidas en otros proyectos.
Se planteó resolver este problema encerrando el proyecto en un espacio de nombres (NameBlock) MMS, pero debemos resolver estos bugs que quedan pendientes...
De lo contrario, ya barajamos renombrar todas las clases con MMS.* (MMS.Output, MMS.Input,...) aunque dada la cantidad de código pueda ser un poco engorroso.
comment:5 Changed 15 years ago by
Status: | reopened → accepted |
---|
Ya veo. Simplemente no recordaba que había varios errores encerrados en este ticket.
En el futuro quizás sería mejor hacer un ticket por cada error distinto, aunque tampoco pasa nada, se reabre y ya está.
comment:6 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
comment:7 Changed 15 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
He recompilado TOL y el error descrito en el punto 2 ya está solucionado.
Sin embargo no lo está aún el descrito en el punto 3.
comment:8 Changed 15 years ago by
Es curioso porque si la función que recibe el argumento tiene nombre, que es lo que puse yo en el test para poder hacer trazas internas, entonces no falla:
Set aux.3.2 = EvalSet(aux.2.1, Text fun_aux.3.2(Proj::MiClase c) { ClassOf(c) });
Pero si le quitamos el nombre entonces sí que casca:
Set aux.3.2 = EvalSet(aux.2.1, Text (Proj::MiClase c) { ClassOf(c) });
Habrá que volver a revisar lo que deja ahí el parser y darle otra vuelta de tuerca.
comment:9 Changed 15 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Todos estos problemas ya los conocía y tienen que ver con que el parser no estaba pensado para esta sintaxis.
Se hará lo que se pueda, pero hasta ahora no he visto cómo solucionarlo.