RX0013

डोमेन: इंजन

त्रुटि संदेश

errors.feml इतनी अस्वीकृतियाँ घोषित करता है जितनी एक contract set में नहीं समा सकतीं (सीमा %s, अस्वीकृति %s पर पहुँची)

संदेश में %s उस मान की जगह है जिसे इंजन त्रुटि उठाते समय भरता है।

कहानी

इंजन जन्म के समय रुक गया, क्योंकि errors.feml में अस्वीकृतियाँ इतनी ज़्यादा हैं कि एक contract set में नहीं आतीं। असल बात यह है। rush की हर अस्वीकृति का एक क्रमांक होता है और हर क्रमांक के लिए इंजन में एक contract बनता है। इन सब contracts को पकड़ने वाला सेट एक सीमित आकार का है, W_MAX_CONTRACTS। यही सीमा सूची की सीमा बन जाती है। अब सोचिए कि इंजन चुपचाप आख़िरी कुछ अस्वीकृतियाँ छोड़ दे: तब कोई वैध, दर्ज अस्वीकृति भी अदर्ज दिखती, और इंजन उसे उठाने पर RX0002 जैसी गड़बड़ी में फँस जाता। नियम है कि अदर्ज अस्वीकृति उठाना असंभव होना चाहिए, सिर्फ़ असंभावित नहीं। इसीलिए इंजन जन्म ही अस्वीकार करता है, और सीमा तथा वह अस्वीकृति बताता है जहाँ सीमा टूटी। जैसे अलमारी में बीस खाने हों और इक्कीसवीं फ़ाइल आ जाए। हल: tungsten का W_MAX_CONTRACTS बढ़ाइए, या सूची को एक से अधिक contract set में बाँट दीजिए। यह इंजन बनाने वालों का काम है, स्क्रिप्ट लिखने वालों का नहीं।

पाठ Rush इंजन की त्रुटि सूची से लिया गया है।