RX0031

Domaine: Moteur

Message d'erreur

une référence a reçu une coordonnée que le %s ne possède pas

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

L'histoire

Vous avez donné une référence à une coordonnée que personne ne possède, et le moteur l'a refusée. Voyons pourquoi cette vérification existe. Dans rush, une référence est une coordonnée qui désigne quelque chose dans le DataHeap. Mais une coordonnée qui ne nomme rien n'est pas une référence : c'est un champ en forme de pointeur avec un mot écrit dessus. Alors, chaque fois qu'on lui présente une coordonnée, le moteur la rend à la population qui devrait en être propriétaire, et il la cherche. Si cette population ne l'a jamais placée, c'est refusé. Pourquoi chercher plutôt que calculer ? Parce qu'une simple arithmétique d'adresses accepterait n'importe quelle adresse dans la plage et l'appellerait locataire. Autre cas couvert par le même message : une référence dans l'ExecHeap qui ne désigne pas un locataire antérieur. L'ordre d'arrivée est total, et la règle « antérieur seulement » garantit que les sous-expressions forment un graphe sans cycle, sans avoir à détecter quoi que ce soit. Le message nomme la population concernée. Vérifiez que la coordonnée que vous passez vient bien d'un placement réel, et non d'une valeur inventée.

Texte issu du catalogue d'erreurs du moteur Rush.