UNIVALI-LITE-BACKUP/Portugol-Nucleo

Erro de Compilação em resultados previsíveis pelo compilador Java

Closed this issue · 4 comments

Quando o usuário escreve um laço enquanto com uma condição cujo resultado é previsível pelo compilador o programa gera um erro de compilação.

Ex.:

enquanto (verdadeiro)
{
     ...
}

escreva("Olá mundo")

Este código gera erro, pois o compilador Java detecta que a condição sempre será verdadeira e consequentemente o laço é infinito. Logo, todo código após o enquanto nunca será executado e isso gera um UnreachebleCodeError no compilador.

Outro exemplo:

enquanto (2 < 3)
{

}

e isso não está certo?

Está certo do ponto de vista lógico.
Porém, o Portugol Studio só apresenta uma mensagem genérica: "Erro ao compilar".

Temos duas opções, ou damos um bypass nessa verificação e ignoramos o erro ou exibimos uma mensagem melhor para o usuário, do tipo:

"Linha: X, Coluna: Y. O laço 'enquanto' vai executar infinitamente, pois sua condição é sempre verdadeira. Todos os comandos a partir da linha Z nunca serão executados."

rytix commented

Esta Issue é um pouco mais séria, Todos os eventos que o compilador Java consegue prever e o Portugol Studio não irão gerar um Erro de Compilação.
Exemplos:

programa{

    funcao inicio()
    {
        inteiro x = 5
        escolha(x){
        	caso 1: 
        	pare
        	retorne
       }
    }
}
programa{

    funcao inicio()
    {
        enquanto (verdadeiro){
        	
        }
        escreva("oi")
    }
}
programa{

    funcao inicio()
    {
        	retorne
        	retorne
    }
}