RX0116

Dominio: Análisis sintáctico

Mensaje de error

un rol sin etiqueta: %s (%s)

En el mensaje, %s marca un valor que el motor completa cuando lanza el error.

La historia

Escribiste una llamada con dos parámetros del mismo tipo pero de roles distintos, y dejaste uno sin etiqueta. Cada parámetro de un builtin declara un rol. Cuando dos parámetros comparten tipo y se distinguen solo por su rol, ambos deben llevar etiqueta. Por ejemplo, substring con start dos puntos uno y end dos puntos tres es correcto. Pero substring con un uno suelto y luego end dos puntos tres se rechaza. ¿Por qué? Porque el orden de los argumentos nunca lleva un rol, y el que sobra no se identifica por eliminación. Hay excepciones razonables: el ser de la llamada queda desnudo, y el receptor en forma de método tampoco se escribe. Y cuando los dos parámetros tienen el mismo tipo y el mismo rol, como los dos operandos de una suma, no hace falta ninguna etiqueta. El mensaje te nombra la llamada, los parámetros y sus roles. La solución: etiqueta los dos. Con roles claros, nadie adivina cuál es cuál.

Texto del catálogo de errores del motor de Rush.