Issue #19: está implementado el pragma ATTRIBUTE. Todas las definiciones (program, interactive program, procedimiento, función o tipo) pueden venir precedidas de cero o más ocurrencias del pragma ATTRIBUTE. Por ejemplo:
/*@ATTRIBUTE@block_icon@base64asdf@*/
/*@ATTRIBUTE@block_name@Hola++@*/
procedure HolaMasMas() {
}
/*@ATTRIBUTE@atomic@yes@*/
program {
}
El resultado es que cada definición viene acompañada de un diccionario de atributos:
(Nota: la sintaxis de los pragmas con tantas @ es medio fea, creo que todavía estamos a tiempo de mejorarla).
Issue #21: se mejoraron los mensajes de error cuando hay delimitadores no balanceados (paréntesis, corchetes y llaves).
Issue #22: se mejoraron los mensajes de error referidos a tipos.
Se omite el índice de los parámetros para funciones con un solo parámetro. P.ej. ante Poner(5) el error que se obtiene es El parámetro de "Poner" debería ser un color pero es un número., en lugar de El parámetro #1 de "Poner" ....
El índice de los parámetros se escribe en castellano para funciones de más de un parámetro. P.ej. ante 1 + False el error que se obtiene es El segundo parámetro de "+" debería ser un número pero es un booleano., en lugar de El parámetro #2 de "+" ....
Siempre que un tipo involucre únicamente los siguientes constructores: número, booleano, color, dirección y lista de X, los mensajes de error describen el tipo de manera Intro-friendly, sin hacer referencia a conceptos más avanzados (como el concepto mismo de tipo). P.ej.: se esperaba un número pero se encontró una lista de colores, en lugar de se esperaba un valor de tipo Int pero se encontró un valor de tipo List(Color).
Si el tipo es más complejo se usa la notación más precisa que se usaba anteriormente. Esto todavía puede requerir ajustes en el futuro.
Issue #23: las snapshots y los errores que se obtienen en tiempo de ejecución (ExecutionError) además de tener un atributo region con el nombre de la región actual, ahora tienen un atributo regionStack con la pila dinámica (backtrace) de regiones.
Los errores estáticos (ParseError) tienen region pero no tienen regionStack porque esto obviamente no tiene sentido.
Issue #24: se arregló este bug. El motivo del bug era que había algunas declaraciones de constantes, por ejemplo, const typeColor = new TypeStructure(i18n('TYPE:Color'), {}) que en realidad no son constantes porque dependen implícitamente del idioma actual. Se las modificó para que sean funciones.
Issue #19: está implementado el pragma
ATTRIBUTE
. Todas las definiciones (program, interactive program, procedimiento, función o tipo) pueden venir precedidas de cero o más ocurrencias del pragmaATTRIBUTE
. Por ejemplo:El resultado es que cada definición viene acompañada de un diccionario de atributos:
(Nota: la sintaxis de los pragmas con tantas
@
es medio fea, creo que todavía estamos a tiempo de mejorarla).Issue #21: se mejoraron los mensajes de error cuando hay delimitadores no balanceados (paréntesis, corchetes y llaves).
Issue #22: se mejoraron los mensajes de error referidos a tipos.
Se omite el índice de los parámetros para funciones con un solo parámetro. P.ej. ante
Poner(5)
el error que se obtiene esEl parámetro de "Poner" debería ser un color pero es un número.
, en lugar deEl parámetro #1 de "Poner" ...
.El índice de los parámetros se escribe en castellano para funciones de más de un parámetro. P.ej. ante
1 + False
el error que se obtiene esEl segundo parámetro de "+" debería ser un número pero es un booleano.
, en lugar deEl parámetro #2 de "+" ...
.Siempre que un tipo involucre únicamente los siguientes constructores: número, booleano, color, dirección y lista de X, los mensajes de error describen el tipo de manera Intro-friendly, sin hacer referencia a conceptos más avanzados (como el concepto mismo de tipo). P.ej.:
se esperaba un número pero se encontró una lista de colores
, en lugar dese esperaba un valor de tipo Int pero se encontró un valor de tipo List(Color)
.Si el tipo es más complejo se usa la notación más precisa que se usaba anteriormente. Esto todavía puede requerir ajustes en el futuro.
Issue #23: las snapshots y los errores que se obtienen en tiempo de ejecución (
ExecutionError
) además de tener un atributoregion
con el nombre de la región actual, ahora tienen un atributoregionStack
con la pila dinámica (backtrace) de regiones.Los errores estáticos (
ParseError
) tienenregion
pero no tienenregionStack
porque esto obviamente no tiene sentido.Issue #24: se arregló este bug. El motivo del bug era que había algunas declaraciones de constantes, por ejemplo,
const typeColor = new TypeStructure(i18n('TYPE:Color'), {})
que en realidad no son constantes porque dependen implícitamente del idioma actual. Se las modificó para que sean funciones.