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.
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
Ausgabepositionen:
--> file:line:column: Fehlercode und Zusammenfassung^: Problemlokalisierung- Quellblock + Caret(
^) Hervorhebung Kontext,Erwartet,Gefunden,Hinweis,Hilfe,Vorschlag
Repräsentativer Fehlercode
E1002Unerwartetes ZeichenE1003Nicht geschlossener BlockkommentarE1004Nicht abgeschlossener StringE1005Ungültige Zeichenketten-EscapeE1006Ungültiges ZeichenliteralE2001Ungültiges ZahlenliteralformatE3001Parser SyntaxfehlerE3001Semantische AnalysefehlermeldungE3102nullan Nicht-Pointer zugewiesenE9001Verbot 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.
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
Wenn eine Positionsbestimmung nicht möglich ist, wird eine Fallback-Position verwendet, die im Hinweis angezeigt wird.
