Diagnosticos y errores semanticos
Objetivo de aprendizaje
- Interpretar diagnosticos rapidamente y elegir la correccion correcta.
Sintaxis clave
Line 2, column 12: Incompatible return type: expected int but got string
Ejemplos
- Diagnosticos comunes:
- undeclared variable
- unknown function o class
- cantidad de argumentos incorrecta
- asignacion o retorno incompatible
- return fuera de funcion
- import ciclico o simbolo faltante
Diagnosticos frecuentes y correccion rapida
Undeclared variable: 'x'
- Causa: la variable no existe en el scope actual. - Correccion: declara con let/const o usa el simbolo correcto.
Unknown function or class: 'Foo'
- Causa: import faltante, typo o nombre incorrecto. - Correccion: agrega el import y valida el identificador exacto.
Incorrect number of arguments for 'fn': A != B
- Causa: la llamada no coincide con la firma de funcion/metodo. - Correccion: ajusta argumentos o firma.
Cannot initialize 'x' of type list<T> with list<any>
- Causa: inferencia incompatible de lista. - Correccion: usa declaracion tipada (let x: list<T> = []) o valores compatibles.
Cannot call member 'length' on type list<...>
- Causa: length() no es metodo soportado para listas en Lucia. - Correccion: usa len(lista).
Unexpected Token '='cerca de escritura por indice
- Causa en versiones antiguas: no estaba habilitado el target indexado. - Comportamiento actual: obj[i] = value; esta soportado.
Errores comunes
- Aplicar quick fix sin entender causa raiz.
- Ignorar limites entre archivos cuando el error viene de imports.
Flujo de depuracion recomendado
- Atiende primero el primer error; los siguientes suelen ser en cascada.
- Verifica imports y nombres antes de tocar logica compleja.
- Reduce el caso a un snippet minimo reproducible.
- Ejecuta nuevamente despues de cada ajuste para confirmar causa real.
Practica sugerida
- Provoca 3 diagnosticos intencionales y corrige cada uno explicando la causa.
Relacionados
- declarations-let-const
- functions-and-builtins
- oop-and-modules