RX0167

Domínio: Análise sintática

Mensagem de erro

`if` onde cabe um valor: %s (%s)

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

A história

Você usou um if no lugar de um valor, e o motor ensinou o jeito certo. Vamos entender. No rush, if é um fluxo. Ele contém instruções e roteia entre elas, mas não produz um valor. Por isso, escrever x igual a if ok, o texto sim, else, o texto não, não tem nada para guardar em x. O motor poderia dizer que o nome if não foi encontrado, mas isso confundiria. Em vez disso, ele recusa no parse e explica. O jeito legal é vincular dentro de cada ramo. Escreva if ok, e na linha de baixo, indentada, x igual a sim. Depois, else, e embaixo, indentado, x igual a não. Os ramos é que vinculam, e o nome x pertence ao módulo. É como um desvio na estrada: o desvio não é um lugar, ele leva a lugares. A mensagem diz onde o if foi escrito. A correção: reescreva em forma de bloco, com a atribuição dentro de cada ramo.

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