Skip to content

Commit

Permalink
Checar uso de função após a declaração
Browse files Browse the repository at this point in the history
Fixes #253
(a solução não é a melhor, mas é funcional)
  • Loading branch information
dgadelha committed Jul 27, 2024
1 parent deec5b9 commit 9efd228
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
5 changes: 4 additions & 1 deletion packages/ide/src/app/tab-start/tab-start.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,10 @@

<section class="info">
<h4><svg-icon src="assets/mdi/newspaper.svg" svgAriaLabel="Ícone de jornal para notícias" />Novidades</h4>
<p><strong>26/07/2024:</strong> Melhorias na exibição de erros de compilação</p>
<p>
<strong>26/07/2024:</strong> Melhorias na exibição de erros de compilação e correção de checagem de uso de função
antes da declaração
</p>
<p>
<strong>24/07/2024:</strong> Correção nas funções <code>maior_numero</code> e <code>menor_numero</code> da
biblioteca <code>Matematica</code>
Expand Down
16 changes: 9 additions & 7 deletions packages/parser/src/errors/02-variáveis.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,7 @@ export function* checarUsoEscopo(arquivo: Arquivo): Generator<PortugolCodeError>

case Função: {
const func = as Função;

escopo.funções.set(func.nome, func.retorno);
escopo.push();
escopo.função = func.retorno;

yield* varrerNós(.children);

escopo.pop();
break;
}

Expand Down Expand Up @@ -177,4 +170,13 @@ export function* checarUsoEscopo(arquivo: Arquivo): Generator<PortugolCodeError>
}

yield* varrerNó(arquivo);

for (const func of arquivo.funções) {
escopo.push();
escopo.função = func.retorno;

yield* varrerNós(func.children);

escopo.pop();
}
}

0 comments on commit 9efd228

Please sign in to comment.