Fehlerdiagnose
Der Wave-Compiler zeigt Fehler zusammen mit dem Code (E####), dem Quellort/-kontext und Lösungshinweisen gleichzeitig.
Ausgabeformat
Das Grundformat sieht wie folgt aus.
Fehler[E3001]: Semantische Validierung fehlgeschlagen: Verwendung einer nicht deklarierten Kennung `x`
--> datei.wave:2:18
1 | fun main() {
2 | println("{}", x);
| ^ in diesem Bereich nicht gefunden
= Kontext: Semantische Validierung
= Hilfe: Beheben Sie Probleme mit Mutabilität, Gültigkeit des Bereichs und des Ausdrucks
Ausgabepositionen:
error[E....]: Fehlercode und Zusammenfassung--> datei:zeile:spalte: Problemlokalisierung- Quellblock + Caret(
^) Hervorhebung Kontext,Erwartet,Gefunden,Hinweis,Hilfe,Vorschlag
Repräsentativer Fehlercode
E1001Unerwartetes ZeichenE1002Nicht geschlossener BlockkommentarE1003Nicht abgeschlossener StringE1004Ungültige Zeichenketten-EscapeE1005Ungültiges ZeichenliteralE1006Ungültiges ZahlenliteralformatE2001Parser SyntaxfehlerE3001Semantische AnalysefehlermeldungE3102nullan Nicht-Pointer zugewiesenE3201Verbot der impliziten GanzzahlverkleinerungE9001Interner Fehler bei der Backend-Codegenerierung
Backend-Fehler zeigen ebenfalls die Quellenposition an
Selbst wenn während der Codegenerierung (LLVM) ein interner Panikzustand auftritt, wird die tatsächliche Aufruf-/Deklarationsposition, wenn möglich, ermittelt und angezeigt.
Fehler[E9001]: Interner Compiler-Fehler während der Codegenerierung (llvm-ir-Generierung)
--> test.wave:12:9
= gefunden: Funktion 'foo' nicht gefunden
= Hinweis: Quellenposition aus nicht aufgelöstem Funktionsnamen in Backend-Panik herausgefiltert
Wenn eine Positionsbestimmung nicht möglich ist, wird eine Fallback-Position verwendet, die im Hinweis angezeigt wird.