RX0010

Domain: Engine

Error message

types.feml declares more types than this engine can materialize (limit %s, reached at type %s)

In the message, %s marks a value that the engine fills in when it raises the error.

The story

The engine stopped at birth, saying there are more types than it can hold. This is about room. The type table has a fixed size, chosen on purpose so that the engine's shape is a known fact rather than something it hopes will fit. Every type you declare in types.feml gets turned into a judging piece and placed in one static arena. When the table is full and another type wants in, the engine has a choice. It could quietly drop the extra type, but a dropped type is a type that cannot judge, and that would mean values slipping through unchecked. So it does the honest thing and refuses to start. The message gives you two numbers that matter: the limit, and the type where the limit was reached. That is the first one that did not fit. Think of a bus with forty seats: the forty-first passenger is not pushed off the road, the driver just says we are full and does not leave. The remedy is a single constant. Raise LAWMAKER_TYPE_MAX in lawmaker.h to a larger number, rebuild, and the engine will have room for your whole vocabulary. Nothing else changes.

Text from the Rush engine's error catalogue.