Diagnóstico de errores
El compilador Wave muestra los errores junto con el código (E####), ubicación/contexto de la fuente y sugerencias de resolución todo a la vez.
Formato de salida
El formato básico es el siguiente.
error[E3001]: semantic validation failed: use of undeclared identifier `x`
--> file.wave:2:18
1 | fun main() {
2 | println("{}", x);
| ^ not found in this scope
= context: semantic validation
= help: fix mutability, scope, and expression validity issues
Elementos de salida:
--> file:line:column: código de error y resumen^: ubicación del problema- Bloque de código fuente + resaltado con signo de intercalación (
^) context,expected,found,note,help,suggestion
Códigos de error representativos
E1002Carácter inesperadoE1003Comentario de bloque sin cerrarE1004Cadena de texto sin cerrarE1005Escape de cadena de texto incorrectoE1006Literal de carácter incorrectoE2001Formato de literal numérico incorrectoE3001Error de sintaxis de parserE3001Error de validación semánticaE3102Asignación denulla un no punteroE9001Prohibida la reducción implícita de enterosE9001Error interno de generación de código de backend
Los errores de backend también muestran la ubicación en el código fuente
Incluso si ocurre un pánico interno en la etapa de generación de código (LLVM), cuando sea posible, se mostrará la ubicación real de la llamada/declaración.
error[E9001]: compiler internal error during code generation (llvm-ir-generation)
--> test.wave:12:9
= found: Function 'foo' not found
= note: source position inferred from unresolved function name in backend panic
Cuando no se puede inferir una posición, se usa la posición de respaldo, y este hecho se indica en la nota.
