aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-02-16 13:06:11 +0200
committerVeikka Tuominen <git@vexu.eu>2022-02-17 14:23:35 +0200
commit9c36cf92f009eda14cb773e89148547dadb137c6 (patch)
tree7be6ab7d21cd37709e3ed877264b9a4b135171d3 /src/Module.zig
parent5283a52af565521094bcd1186efc179b4be7ee8c (diff)
downloadzig-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.zig8
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,