Opened 13 years ago
Closed 13 years ago
#1461 closed defect (fixed)
Error con los tipos al evaluar una expresión sencilla
Reported by: | Pedro Gea | Owned by: | Víctor de Buen Remiro |
---|---|---|---|
Priority: | high | Milestone: | Mantainance |
Component: | Kernel | Version: | 3.1 |
Severity: | critical | Keywords: | |
Cc: |
Description
Al evaluar el siguiente código:
Date first = y2000; Date last = y2001; Real DateToIndex(first)-DateToIndex(last);
encuentro el error:
ERROR: [1] No ha sido posible convertir de Real hacia Date para el objeto '$tmp$' ERROR: [2] Argumentos erróneos para Date - d - x {Date d [, Real x=1]}
pero no consigo entender por qué.
Change History (3)
comment:1 Changed 13 years ago by
Resolution: | → wontfix |
---|---|
Status: | new → closed |
comment:2 Changed 13 years ago by
Resolution: | wontfix |
---|---|
Status: | closed → reopened |
En mi opinión esto es un error, no veo ningún sentido a que el operador de tipado sea prioritario frente a cualquier otro operador, más bien debería ser al revés.
No sé si podría justificarse de algún modo esta elección, si no, creo que es algo para solucionar antes o después. Si esto resulta algo muy complicado, pues después.
comment:3 Changed 13 years ago by
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Esto no es un error , es así como es la sitaxis de TOL te guste o no.
Los operadores de tipado tienen prioridad sobre el resto por lo que lo que estás escribiendo es equivalente a
cuando lo que quieres decir es esto otro:
o quizás esto otro
El problema es que en el ámbito global prevalece la gramática de la última sentencia que es Date en este caso. En el ámbito local es el del valor de retorno y por eso no daría este problema
Real {
Date first = y2000;
Date last = y2001;
Real DateToIndex(first) - DateToIndex(last)
};