RX0012

Domaine: Moteur

Message d'erreur

builtins.feml déclare plus de builtins qu'un jeu de contrats ne peut en contenir (limite %s, atteinte au builtin %s)

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

L'histoire

Le moteur refuse de naître : vous avez déclaré plus de builtins que la loi d'exécution ne peut en contenir. Détaillons le mécanisme. La loi d'exécution est un jeu de contrats tungsten. Chaque builtin y entre deux fois : une fois avec son propre contrat, et une fois avec son contrat d'effet. Le plafond du jeu, W_MAX_CONTRACTS, se divise donc par deux pour compter les builtins. Et ce calcul est écrit une seule fois, dans le code, pour que la limite déclarée et la limite appliquée ne puissent jamais diverger. Quand la table est pleine, le moteur aurait pu ignorer les dernières lignes. Mais alors, il affirmerait que tel builtin n'existe pas, alors que le fichier le déclare clairement. Un mensonge. Il préfère donc s'arrêter. Pensez à une valise pleine : au lieu de fermer en laissant une chaussure dehors, il vous prévient. Le message vous donne la limite et le builtin où elle a été franchie. Même logique pour les tables des lois Trinity et d'effet : un dépassement est toujours un refus de capacité, jamais un refus de vocabulaire. Deux solutions : augmenter W_MAX_CONTRACTS dans tungsten, ou répartir la déclaration sur plusieurs jeux de contrats.

Texte issu du catalogue d'erreurs du moteur Rush.