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