Pular para o conteúdo

Renomear sem quebrar

relay novo as antigo — o nome novo e o velho, o mesmo objeto, e o abi dizendo que é compatível.

Renomear uma ação pública quebra todo programa que chama o nome antigo — no dia em que ele atualiza. relay novo as antigo exporta o mesmo objeto com os dois nomes: quem usa o antigo continua funcionando, e o código novo já usa o nome certo.

precos.df
// precos.df — a versao 2
action total_com_imposto(valor):
    yield valor * 1.1

// Os dois nomes saem; o antigo e so um apelido.
relay total_com_imposto, total_com_imposto as total
main.df
adopt ./precos as P
assert P.total is P.total_com_imposto        // o MESMO objeto
out P.total(100)

O `abi` concorda#

text
$ dataforge abi v1/precos.df v2/precos.df
  + total_com_imposto  [simbolo-novo]
  veredito: versao MENOR — so acrescimos compativeis

$ # sem o apelido, o mesmo rename:
  - total              [simbolo-removido]
  veredito: versao MAIOR
FormaEfeito
relay aa sai com o próprio nome
relay a as bb sai — a fica interno
relay a, a as bos dois saem, e são o mesmo objeto
relay a as b, c as brecusado: um nome exportado duas vezes