Chẩn đoán lỗi
Trình biên dịch Wave hiển thị lỗi cùng với mã lỗi (E####), vị trí/ngữ cảnh/đề xuất giải pháp cho mã nguồn cùng lúc.
Dạng đầu ra
Dạng cơ bản như sau.
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
Mục đầu ra:
--> file:line:column: mã lỗi và tóm tắt^: vị trí vấn đề- khối mã nguồn + caret(
^) nổi bật context,expected,found,note,help,suggestion
Mã lỗi đại diện
E1002ký tự không mong đợiE1003chú thích khối chưa được đóng kínE1004chuỗi chưa được đóng kínE1005escape chuỗi không hợp lệE1006literal ký tự không hợp lệE2001dạng literal số không hợp lệE3001lỗi cú pháp trình phân tích cú phápE3001lỗi xác nhận ngữ nghĩaE3102gánnullcho không phải là con trỏE9001không cho phép thu hẹp số nguyên ẩnE9001lỗi nội bộ khi tạo mã hậu kỳ
Lỗi back-end cũng hiển thị vị trí nguồn
Ngay cả khi có sự cố panic nội bộ trong giai đoạn tạo mã (LLVM), vị trí gọi/thông báo thực tế sẽ được suy luận và hiển thị nếu có thể.
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
Khi không thể suy luận về vị trí, vị trí dự phòng sẽ được sử dụng và thực tế này sẽ được ghi cùng với note.
