Diagnosticos e erros semanticos

Objetivo de aprendizagem

  • Interpretar diagnosticos rapidamente e escolher o caminho certo de correcao.

Sintaxe chave

Line 2, column 12: Incompatible return type: expected int but got string

Exemplos

  • Diagnosticos comuns:
  • variavel nao declarada
  • funcao ou classe desconhecida
  • quantidade de argumentos incorreta
  • atribuicao ou retorno com tipo incompativel
  • return fora de funcao
  • import ciclico ou simbolo ausente

Diagnosticos frequentes e correcoes rapidas

  • Undeclared variable: 'x'

- Causa: variavel nao declarada no escopo atual. - Correcao: declare com let/const ou referencie o simbolo correto.

  • Unknown function or class: 'Foo'

- Causa: import ausente, erro de escrita ou nome de simbolo incorreto. - Correcao: adicione o import e valide o identificador exato.

  • Incorrect number of arguments for 'fn': A != B

- Causa: chamada nao corresponde a assinatura da funcao/metodo. - Correcao: ajuste os argumentos da chamada ou a assinatura.

  • Cannot initialize 'x' of type list<T> with list<any>

- Causa: tipo inferido de lista incompativel. - Correcao: use declaracao tipada (let x: list<T> = []) ou valores compativeis.

  • Cannot call member 'length' on type list<...>

- Causa: length() nao e metodo de lista em Lucia. - Correcao: use len(listValue).

  • Unexpected Token '=' perto de escrita indexada

- Causa em versoes antigas do compilador: atribuicao indexada nao habilitada. - Comportamento atual: obj[i] = value; e suportado.

Erros comuns

  • Aplicar quick fix sem entender a causa raiz.
  • Ignorar limites de arquivo/modulo quando os erros vem de imports.

Fluxo de debug

  • Leia primeiro o primeiro erro. Os proximos muitas vezes sao efeito cascata.
  • Verifique imports e nomes de simbolos antes de mexer em logica complexa.
  • Reduza para um snippet minimo reproduzivel.
  • Execute novamente a cada correcao para confirmar a causa real.

Pratica sugerida

  • Gere 3 diagnosticos intencionalmente e corrija cada um com explicacao.

Relacionados

  • declarations-let-const
  • functions-and-builtins
  • oop-and-modules