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]: validación semántica fallida: uso de identificador no declarado `x`
--> file.wave:2:18
1 | fun main() {
2 | println("{}", x);
| ^ no encontrado en este ámbito
= contexto: validación semántica
= ayuda: solucionar problemas de mutabilidad, ámbito y validez de expresión
Elementos de salida:
error[E....]: código de error y resumen--> file:line:column: 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
E1001Carácter inesperadoE1002Comentario de bloque sin cerrarE1003Cadena de texto sin cerrarE1004Escape de cadena de texto incorrectoE1005Literal de carácter incorrectoE1006Formato de literal numérico incorrectoE2001Error de sintaxis de parserE3001Error de validación semánticaE3102Asignación denulla un no punteroE3201Prohibida 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]: error interno del compilador durante la generación de código (llvm-ir-generation)
--> test.wave:12:9
= encontrado: Función 'foo' no encontrada
= nota: posición de código fuente inferida a partir del nombre de función no resuelto en pánico de backend
Cuando no se puede inferir una posición, se usa la posición de respaldo, y este hecho se indica en la nota.