RX0043

Domaine: Exécution

Message d'erreur

la collection à %s a refusé un versement (%s)

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

L'histoire

Vous avez essayé de verser quelque chose dans une collection, et la collection n'en a pas voulu. Voyons ce qu'il se passe. Une liste ou une map a une forme, et cette forme décide de ce qu'elle admet. Le juge, c'est tungsten, avec un comportement unique pour toutes les collections, et non un contrôle écrit à la main dans le moteur. Deux exemples classiques. Vous écrivez un, puis a entre guillemets dans une même liste : la collection est homogène, et ce mélange est refusé. Ou bien vous versez dans une collection bornée déjà pleine : capacité atteinte. Le second emplacement du message cite le verdict de la collection elle-même, dans ses propres mots. Ce refus existe à part depuis qu'on s'est aperçu d'une erreur d'aiguillage : avant, un versement refusé était signalé comme une construction que le parseur ne comprend pas. On accusait donc l'analyseur d'un jugement rendu par le tas à l'exécution, et le lecteur cherchait au mauvais endroit, alors qu'il tenait le bon verdict. Un refus doit nommer l'étape qui a refusé. Lisez le verdict, puis ajustez : mêmes types dans la liste, ou plus de capacité.

Texte issu du catalogue d'erreurs du moteur Rush.