| name | adding-error-codes |
| description | Use when adding new diagnostic error codes to the compiler |
Adding Error Codes
Overview
Vole uses structured error codes: E0xxx (lexer), E1xxx (parser), E2xxx (semantic).
Checklist
-
Get next available code:
just dev next-error sema
just dev next-error parser
just dev next-error lexer
-
List existing errors (for reference):
just dev list-errors sema
just dev list-errors parser
just dev list-errors all
-
Add error variant to the appropriate file:
| Error Type | File |
|---|
| Lexer | src/crates/vole-frontend/src/errors/lexer.rs |
| Parser | src/crates/vole-frontend/src/errors/parser.rs |
| Semantic | src/crates/vole-sema/src/errors/mod.rs |
-
Emit the error in the relevant analyzer/parser code:
| Error Type | Emission Location |
|---|
| Lexer | src/crates/vole-frontend/src/lexer.rs |
| Parser | src/crates/vole-frontend/src/parser/*.rs |
| Semantic | src/crates/vole-sema/src/analyzer/**/*.rs |
Sema errors use self.add_error(SemanticError::Variant { span }, span).
-
Add snapshot test for error message:
- Create
test/snapshot/check/sema/your_error.vole with code that triggers the error
- Run
cargo run -p vole-snap -- bless test/snapshot/check/sema/your_error.vole
-
Verify:
just pre-commit