diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-02-16 13:06:11 +0200 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-02-17 14:23:35 +0200 |
| commit | 9c36cf92f009eda14cb773e89148547dadb137c6 (patch) | |
| tree | 7be6ab7d21cd37709e3ed877264b9a4b135171d3 /src/Module.zig | |
| parent | 5283a52af565521094bcd1186efc179b4be7ee8c (diff) | |
| download | zig-9c36cf92f009eda14cb773e89148547dadb137c6.tar.gz zig-9c36cf92f009eda14cb773e89148547dadb137c6.zip | |
parser: make some errors point to end of previous token
For some errors if the found token is not on the same line as
the previous token, point to the end of the previous token.
This usually results in more helpful errors.
Diffstat (limited to 'src/Module.zig')
| -rw-r--r-- | src/Module.zig | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/Module.zig b/src/Module.zig index 4ffd6925b6..280c58ade8 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -2995,7 +2995,7 @@ pub fn astGenFile(mod: *Module, file: *File) !void { const token_starts = file.tree.tokens.items(.start); const token_tags = file.tree.tokens.items(.tag); - const extra_offset = file.tree.errorOffset(parse_err.tag, parse_err.token); + const extra_offset = file.tree.errorOffset(parse_err); try file.tree.renderError(parse_err, msg.writer()); const err_msg = try gpa.create(ErrorMsg); err_msg.* = .{ @@ -3006,9 +3006,9 @@ pub fn astGenFile(mod: *Module, file: *File) !void { }, .msg = msg.toOwnedSlice(), }; - if (token_tags[parse_err.token] == .invalid) { - const bad_off = @intCast(u32, file.tree.tokenSlice(parse_err.token).len); - const byte_abs = token_starts[parse_err.token] + bad_off; + if (token_tags[parse_err.token + @boolToInt(parse_err.token_is_prev)] == .invalid) { + const bad_off = @intCast(u32, file.tree.tokenSlice(parse_err.token + @boolToInt(parse_err.token_is_prev)).len); + const byte_abs = token_starts[parse_err.token + @boolToInt(parse_err.token_is_prev)] + bad_off; try mod.errNoteNonLazy(.{ .file_scope = file, .parent_decl_node = 0, |
