RX0167

Domaine: Analyse syntaxique

Message d'erreur

un `if` là où une valeur est attendue : %s (%s)

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

L'histoire

Vous avez utilisé un if à droite d'un signe égal, comme si le if rendait une valeur, et le moteur refuse. Voici le principe. Dans rush, un if est un flux : il contient des instructions et choisit entre elles. Il ne produit pas de valeur. Écrire x égale if ok yes else no revient donc à lier x à quelque chose qui n'existe pas. Autrefois, le message disait seulement que le nom if ne localisait rien, ce qui était peu clair. Maintenant, le moteur vous enseigne la bonne forme : on lie à l'intérieur de chaque branche. Vous écrivez if ok, puis, indenté en dessous, x égale yes, puis else, et en dessous, x égale no. Chaque branche lie la valeur, et le nom appartient au module. Pour corriger, déplacez l'affectation à l'intérieur de chaque branche du if. Un if choisit un chemin, il ne rend pas de valeur.

Texte issu du catalogue d'erreurs du moteur Rush.