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 14 years ago

Closed 14 years ago

Last modified 14 years ago

#1260 closed defect (fixed)

fallo al almacenar TimeSet

Reported by: Jorge Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Mantainance
Component: Kernel Version: 2.0.1
Severity: blocker Keywords:
Cc: pgea@…

Description

Si ejecuto lo siguiente:

Serie b = SubSer(CalInd(C, Cuatrimestral), y2001, y2002);
Real Ois.Store([[b]], "/tmp/kk.oza" );

se obtiene el siguiente mensaje:

<W>
Warning: [4] OIS: 
Unbounded TimeSet 
Cuatrimestral = (set[[k]);
 depends on symbol not visible globally. Only cached data in [y2001m01d01,y2011m12d31] will be available when loaded back.</W>

No queda claro de donde sale la expresión TimeSet Cuatrimestral = (set[[k]); ya que Cuatrimestral tiene otra definición.

Change History (5)

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

Status: newaccepted

Ya lo he reproducido. Si que tiene un aspecto muy raro.

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

Resolution: fixed
Status: acceptedclosed

(In [3648]) Fixes #1260

comment:3 Changed 14 years ago by Víctor de Buen Remiro

La StdLib se crea como un Set con Includes y luego se convierte a NameBlock, pasando primero por la función PlainNamedObjects que es la que mete esa expresión set[k].

Podría haber cambiado eso facilmente, pero lo cierto es que set[k] es un referencia a un objeto ya creado, por lo que es absurdo que se le cambie su árbol de expresión. El árbol sintáctico se asigna a los objetos virtuales al final de la evaluación sintáctica, siempre y cuándo no tuvieran ya un árbol asignado, así que no tiene sentido que ocurra esto.

Me ha costado ver dónde estaba el error pero por fin lo he encontrado. Al cargar el OIS crea un TimeSet con la expresión que está correctamente almacenada, y se le asigna el árbol al objeto, pero luego para ponerle nombre se reasignaba internamente y es ese objeto el que salía al exterior sin árbol sintáctico, con lo cual la primera vez que se le referenciaba, o sea, en PlainNamedObjects, se le endosaba esa expresión absurda.

Ya está arreglado en la 2.0.2 y ahora lo mezclaré en la 2.0.1 pero luego hay que pasar los tests, así que llevará un rato tener las versiones publicadas.

comment:4 Changed 14 years ago by Víctor de Buen Remiro

(In [3649]) Fixes #1260
Fixing also for Serie, the other virtual type

comment:5 Changed 14 years ago by Víctor de Buen Remiro

(In [3650]) Fixes #1260
Fixing for TimeSet and Serie in TOL 2.0.1

Note: See TracTickets for help on using tickets.