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

Closed 13 years ago

Last modified 13 years ago

#1394 closed defect (fixed)

ObjectExist and global variables

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Mantainance
Component: Kernel Version: head
Severity: blocker Keywords:
Cc:

Description (last modified by Víctor de Buen Remiro)

Se encuentra una incoherencia al usar la función ObjectExist junto con el operador :: y la gramática Anything;

Real ObjectExist("Anything", "::Tolerance"); // => 0
Real ObjectExist("Anything", "Tolerance");   // => 1
Real ObjectExist("Real", "Tolerance");       // => 1
Real ObjectExist("Real", "::Tolerance");     // => 1

Change History (3)

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

Description: modified (diff)

La función especial EvGlobalFind, que es la que evalúa las expresiones del tipo ::GlobalName está programada para devolver error en caso de usarse con el tipo Anything pues en puridad no tiene porqué haber un sólo objeto con ese nombre en el ámbito global con lo que no está resuelto de forma unívoca.

Lo cierto es que a ObjectExist no le importa si hay varios, lo importante es si hay alguno o no.

Por el momento he hecho un apaño para que el :: devuelva uno cualquiera pero debería salir un warning o algo para avisar de que hay más de uno.

En cualquier caso no se debería usar Anything cuando se sabe el tipo exacto porque en el mejor de los casos irá más lento.

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

Resolution: fixed
Status: newclosed

(In [4015]) Fixes #1394

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

En la versión binaria v2.0.2 b.0.22.alpha recién subida está resuelto el problema, al menos provisionalmente.

Note: See TracTickets for help on using tickets.