RX0041

Domínio: Execução

Mensagem de erro

a expressão em %s não produziu valor, e %s precisa de um

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

A história

Algo no seu script precisava de um valor, e a expressão que você deu não produziu nenhum. Vamos ver o que isso significa. Duas situações caem aqui: um operando de um verbo e o lado direito de uma atribuição. A regra de projeto é que só verbos produzem valores. Se uma função nunca chega a uma resposta, ela não é um verbo que produz, então não há o que guardar. Exemplo: você escreve x igual a f entre colchetes, mas o corpo de f nunca devolve nada. Então x não tem o que receber. E por que o motor não grava um texto vazio e segue em frente? Porque o programa continuaria com um valor que ninguém calculou, e cada leitura de x depois relataria uma ficção como se fosse fato. Do mesmo modo, uma execução recusada não deposita nada: uma recusa não é um resultado. A mensagem informa a expressão e o que precisava do valor, para você ver o ponto exato. A correção é fazer a função responder com um valor, ou não usar essa chamada onde um valor é exigido.

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