RX0093

Domínio: Análise sintática

Mensagem de erro

um parâmetro obrigatório depois de um com padrão: %s (%s)

Na mensagem, %s marca um valor que o motor preenche quando levanta o erro.

A história

Você declarou uma função com um parâmetro obrigatório depois de um que tem valor padrão, e o motor recusou no parse. Vamos entender a ordem. Uma declaração se lê de cima para baixo. Primeiro vêm os parâmetros que quem chama é obrigado a dar: um nome simples, ou um nome com regra. Depois vêm os que podem ser omitidos, aqueles com valor padrão depois dos dois pontos. Então fn f com a e b dois pontos cinco é legal: a é obrigatório, b tem padrão. Já fn f com a dois pontos cinco e b é recusado, porque b, obrigatório, veio tarde demais, depois de um parâmetro que pode faltar. A mensagem nomeia os dois parâmetros e a função. Por quê? Se a pode ser omitido, como saber se o primeiro valor da chamada é para a ou para b? A ordem elimina a dúvida. A correção: mova os parâmetros obrigatórios para o começo da lista, e deixe os com padrão por último.

Texto do catálogo de erros do motor do Rush.