aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-07-12 19:37:02 +0300
committerGitHub <noreply@github.com>2022-07-12 19:37:02 +0300
commit7090f0471c0169c60a9476b537b09eebe1bdf6af (patch)
tree2410a74f83f6a5f7a20c30b2b606da419edf8e96 /src/Module.zig
parent8033767082f2178416fba8cb4a4b03fef961d318 (diff)
parent2a3f3766a437faed13736c1ff505854b6737ae33 (diff)
downloadzig-7090f0471c0169c60a9476b537b09eebe1bdf6af.tar.gz
zig-7090f0471c0169c60a9476b537b09eebe1bdf6af.zip
Merge pull request #12083 from Vexu/c-container-err
parser: add helpful error for C style container declarations
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 3c4962c587..f9cfc5e54e 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -3324,17 +3324,21 @@ pub fn astGenFile(mod: *Module, file: *File) !void {
.parent_decl_node = 0,
.lazy = .{ .byte_abs = byte_abs },
}, err_msg, "invalid byte: '{'}'", .{std.zig.fmtEscapes(source[byte_abs..][0..1])});
- } else if (parse_err.tag == .decl_between_fields) {
- try mod.errNoteNonLazy(.{
- .file_scope = file,
- .parent_decl_node = 0,
- .lazy = .{ .byte_abs = token_starts[file.tree.errors[1].token] },
- }, err_msg, "field before declarations here", .{});
- try mod.errNoteNonLazy(.{
- .file_scope = file,
- .parent_decl_node = 0,
- .lazy = .{ .byte_abs = token_starts[file.tree.errors[2].token] },
- }, err_msg, "field after declarations here", .{});
+ }
+
+ for (file.tree.errors[1..]) |note| {
+ if (!note.is_note) break;
+
+ try file.tree.renderError(note, msg.writer());
+ err_msg.notes = try mod.gpa.realloc(err_msg.notes, err_msg.notes.len + 1);
+ err_msg.notes[err_msg.notes.len - 1] = .{
+ .src_loc = .{
+ .file_scope = file,
+ .parent_decl_node = 0,
+ .lazy = .{ .byte_abs = token_starts[note.token] },
+ },
+ .msg = msg.toOwnedSlice(),
+ };
}
{