aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-02-13 12:34:41 +0200
committerVeikka Tuominen <git@vexu.eu>2022-02-13 13:45:35 +0200
commitddd6de86f7eb71814d3605d3e0ea9ed01d075613 (patch)
tree4d6373402a99ed70eba6aa66dbcc3624036dbe30 /src
parent0b7347fd18eee7dd829cd9aaed3683123d84859b (diff)
downloadzig-ddd6de86f7eb71814d3605d3e0ea9ed01d075613.tar.gz
zig-ddd6de86f7eb71814d3605d3e0ea9ed01d075613.zip
parser: make missing semicolon error point to the end of the previous token
Diffstat (limited to 'src')
-rw-r--r--src/Module.zig3
-rw-r--r--src/main.zig5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 3631e41f25..2cd01acd59 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -2995,13 +2995,14 @@ 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);
try file.tree.renderError(parse_err, msg.writer());
const err_msg = try gpa.create(ErrorMsg);
err_msg.* = .{
.src_loc = .{
.file_scope = file,
.parent_decl_node = 0,
- .lazy = .{ .byte_abs = token_starts[parse_err.token] },
+ .lazy = .{ .byte_abs = token_starts[parse_err.token] + extra_offset },
},
.msg = msg.toOwnedSlice(),
};
diff --git a/src/main.zig b/src/main.zig
index 75655d6a2a..12e9f88088 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -4040,13 +4040,14 @@ fn printErrMsgToStdErr(
notes_len += 1;
}
+ const extra_offset = tree.errorOffset(parse_error.tag, parse_error.token);
const message: Compilation.AllErrors.Message = .{
.src = .{
.src_path = path,
.msg = text,
- .byte_offset = @intCast(u32, start_loc.line_start),
+ .byte_offset = @intCast(u32, start_loc.line_start) + extra_offset,
.line = @intCast(u32, start_loc.line),
- .column = @intCast(u32, start_loc.column),
+ .column = @intCast(u32, start_loc.column) + extra_offset,
.source_line = source_line,
.notes = notes_buffer[0..notes_len],
},