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

Last modified 13 years ago

#1394 closed defect

ObjectExist and global variables — at Version 1

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 (1)

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.

Note: See TracTickets for help on using tickets.