RX0097

Domain: Parsing

Error message

a bare argument on a keyed parameter: %s (%s)

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

The story

You gave a bare value to a parameter that only accepts a keyed one. Some parameters are declared keyed. That means they are filled only when you write their key. Here is why that exists. In the old days, you could write a text, and then a second text, and the second one quietly became the colour. You never asked for that. A second thing written beside the first became a parameter nobody requested. Now, if a bare argument would land on a keyed parameter, the engine refuses at parse, and names the parameter. Suppose you wanted to write two things. Give each one its own bracket group: the first with its colour key, the second on its own. Every item gets its own group, and nothing is quietly reinterpreted. The message shows the row and the parameter, then the fix. Write the key, and the value goes where you intended. The rule is simple: when an argument has a role, say the role by name.

Text from the Rush engine's error catalogue.