close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 15 years ago

Closed 15 years ago

#741 closed defect (fixed)

Working with Classes defined in NameBlocks

Reported by: pgea@… 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)

ticket_11.ClassesInNameBlocks.tol (1.6 KB) - added by pgea@… 15 years ago.

Download all attachments as: .zip

Change History (10)

Changed 15 years ago by pgea@…

comment:1 Changed 15 years ago by Víctor de Buen Remiro

Status: newaccepted

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.

comment:2 Changed 15 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed

This feature has been added at release v2.0.1 b.0.14.alpha

comment:3 Changed 15 years ago by pgea@…

Resolution: fixed
Status: closedreopened

Los errores descritos en [2] y [3] del archivo adjunto siguen ocurriendo.

comment:4 Changed 15 years ago by pgea@…

Severity: criticalblocker

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 Víctor de Buen Remiro

Status: reopenedaccepted

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 Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed

(In [1411]) Fixes #741

comment:7 Changed 15 years ago by pgea@…

Resolution: fixed
Status: closedreopened

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 Víctor de Buen Remiro

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 Víctor de Buen Remiro

Resolution: fixed
Status: reopenedclosed

(In [1425]) Fixes #741

Note: See TracTickets for help on using tickets.