RX0029

Domaine: Moteur

Message d'erreur

l'ExecHeap a reçu le genre que dérive la réponse inerte : %s

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

L'histoire

Cette fois, c'est l'inverse : une simple valeur a essayé d'entrer dans la maison des verbes, et la porte l'a refusée. Rappelons la règle de domicile. Dans rush, un nom est une valeur et vit dans le DataHeap. Les verbes et les flux sont de l'exécution et vivent dans l'ExecHeap. La porte de placement de l'ExecHeap accepte donc tous les genres sauf celui que dérive la réponse inerte. Ici, on lui a présenté justement ce genre : une valeur qui cherchait un logement qui n'est pas le sien. Ce refus est le miroir exact d'un autre, celui du DataHeap. Les deux se calculent de la même façon, en reposant la même question, et non en reconnaissant un mot, de sorte que les deux domiciles dépendent d'un seul critère et ne puissent jamais se contredire. Il fait aussi respecter une moitié de la loi qu'on ne pouvait garder qu'en l'absence : une valeur ne s'assoit jamais dans l'ExecHeap. Il tombe à l'exécution car le genre est lu au démarrage, et aucun compilateur ne peut le connaître d'avance. Le message nomme le genre présenté. La solution : rangez les valeurs dans le DataHeap.

Texte issu du catalogue d'erreurs du moteur Rush.