RX0116

Domaine: Analyse syntaxique

Message d'erreur

un rôle sans étiquette : %s (%s)

Dans le message, %s marque une valeur que le moteur remplit au moment où il lève l'erreur.

L'histoire

Deux paramètres de votre appel ont le même type mais des rôles différents, et l'un d'eux n'a pas d'étiquette. Le moteur refuse. Prenons substring avec un début et une fin : ce sont deux nombres, mais l'un est le début, l'autre la fin. La règle de rush dit que l'ordre ne porte jamais un rôle. Écrire un, puis end deux points trois, laisse le premier nombre sans étiquette, et on ne doit pas le deviner par élimination. Il faut donc étiqueter les deux : start deux points un, end deux points trois. Il existe une exception qui compte : l'être unique de l'appel reste nu, il n'est jamais l'un des deux. Ainsi, range avec un, puis end deux points dix, est licite, car le un est l'être de range. Et si deux paramètres ont le même type et le même rôle, comme les deux opérandes d'une addition, ils forment une suite homogène et n'ont pas besoin d'étiquette. Le message nomme l'appel, les deux paramètres, leur type et leurs rôles : ajoutez l'étiquette manquante.

Texte issu du catalogue d'erreurs du moteur Rush.