Opened 14 years ago
Last modified 14 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 )
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
Note: See
TracTickets for help on using
tickets.

La función especial
EvGlobalFind, que es la que evalúa las expresiones del tipo::GlobalNameestá programada para devolver error en caso de usarse con el tipoAnythingpues 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
ObjectExistno 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
Anythingcuando se sabe el tipo exacto porque en el mejor de los casos irá más lento.