Error message
In the message, %s marks a value that the engine fills in when it raises the error.
The story
You put an expression inside return, and the engine asked you to slow down. Return takes exactly one thing: a single name, or a single literal. So returning x is fine. Returning a member like tipo dot m is fine. Returning five, a quoted word, true, or null are fine, and so is a path. But returning a call, an operator expression, or a chain of methods is not. Why? Because a return is the exit of a function, and the exit should be easy to read. If the answer is computed inside the return, you have to hunt through that line to see what is happening. The rule is simple: compute first, return second. So if you wanted to return the result of a write, give it a name first: res equals write of v, and on the next line, return res. Two short lines, each doing one thing. The engine tells you this at parse time, before anything runs, and the message shows exactly what you put inside the brackets. Name it, then return it.
Text from the Rush engine's error catalogue.
