Mensagem de erro
Na mensagem, %s marca um valor que o motor preenche quando levanta o erro.
A história
Você chamou um builtin e o motor disse que os tipos não combinam: esperava uma coisa e recebeu outra. E repare quando isso acontece: em tempo de parse, antes de uma única linha rodar. O motor lê seu script, confere cada chamada com os tipos declarados dos parâmetros e para ali mesmo se algo estiver errado. Isso é bom, porque nada aconteceu ainda: nenhuma saída, nenhum efeito colateral, nada para desfazer. A mensagem nomeia dois tipos. O primeiro é o que o builtin pediu. O segundo é o que você realmente entregou. Imagine pedir um café e receber um sanduíche: o atendente não adivinha, só diz que não foi isso que você pediu. Digamos que um builtin queira um número e você passe a palavra banana. O motor recusa. A correção é olhar a chamada e perguntar que tipo de valor pertence àquela posição. Converta o valor, ou passe a coisa certa. Se o tipo parece certo para você, confira de onde o valor vem, porque uma variável pode carregar um tipo diferente do que você lembra. A regra é a mesma em todo lugar: o tipo declarado é o contrato, e o contrato é conferido antes de qualquer coisa rodar.
Texto do catálogo de erros do motor do Rush.
