Open samuelrvg opened 1 year ago
@samuelrvg O tente
do egua clássico é um interpretador do javaScript, certo?
@samuelrvg Na verdade esse código não faz muito sentido. O código deveria ser este:
função teste() {
tente {
1 > "1";
escreva("Tente - Pegue: ERRO!");
} pegue {
escreva("Tente - Pegue: OK!");
} finalmente {
retorna(" ");
}
}
escreva(teste());
Testes:
PS D:\Delegua\vscode> egua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: OK!
PS D:\Delegua\vscode> delegua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: ERRO!
@samuelrvg O
tente
do egua clássico é um interpretador do javaScript, certo?
@Aristidescosta Sim, o projeto deles vive em https://github.com/eguatech/egua.
O nosso interpretador precisa executar o código com resultados idênticos. Hoje o que ocorre é que o interpretador Égua executa o código dentro de pegue
, enquanto que o interpretador do dialeto Égua em Delégua executa tudo o que está em tente
. A correção para esta issue, portanto, é fazer com que o interpretador do dialeto Égua neste projeto (https://github.com/DesignLiquido/delegua/blob/principal/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts) execute o código do meu comentário anterior de forma idêntica.
@samuelrvg O
tente
do egua clássico é um interpretador do javaScript, certo?@Aristidescosta Sim, o projeto deles vive em https://github.com/eguatech/egua.
O nosso interpretador precisa executar o código com resultados idênticos. Hoje o que ocorre é que o interpretador Égua executa o código dentro de
pegue
, enquanto que o interpretador do dialeto Égua em Delégua executa tudo o que está emtente
. A correção para esta issue, portanto, é fazer com que o interpretador do dialeto Égua neste projeto (https://github.com/DesignLiquido/delegua/blob/principal/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts) execute o código do meu comentário anterior de forma idêntica.
Mas o comportamento certo seria de dar o erro mencionado pelo samuelrvg
?
Ou deveria ter o comportamento do js de transformar o '1' em número?
@samuelrvg O
tente
do egua clássico é um interpretador do javaScript, certo?@Aristidescosta Sim, o projeto deles vive em https://github.com/eguatech/egua. O nosso interpretador precisa executar o código com resultados idênticos. Hoje o que ocorre é que o interpretador Égua executa o código dentro de
pegue
, enquanto que o interpretador do dialeto Égua em Delégua executa tudo o que está emtente
. A correção para esta issue, portanto, é fazer com que o interpretador do dialeto Égua neste projeto (https://github.com/DesignLiquido/delegua/blob/principal/fontes/interpretador/dialetos/egua-classico/interpretador-egua-classico.ts) execute o código do meu comentário anterior de forma idêntica.Mas o comportamento certo seria de dar o erro mencionado pelo
samuelrvg
? Ou deveria ter o comportamento do js de transformar o '1' em número?
@Aristidescosta As execuções desses comandos precisam ser idênticas:
PS> egua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: OK!
PS> delegua D:\Delegua\vscode\exemplos\egua\excecao.egua
Tente - Pegue: ERRO!
Ou seja, essa linha não pode executar:
escreva("Tente - Pegue: ERRO!");
E hoje, no nosso dialeto, ela executa. Isso porque nosso operador de comparação é bem mais tolerante com diferença de tipos que o operador de Égua.
Este problema ocorre em delegua-node
, não no núcleo. Estou movendo essa issue para o repositório correspondente.
Vide commit https://github.com/DesignLiquido/delegua-node/pull/15/commits/9d52666491f89d7ec4f2f52c19db720d131640d8
Gera erro ao tentar resolver: