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