diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-07-12 19:37:02 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-12 19:37:02 +0300 |
| commit | 7090f0471c0169c60a9476b537b09eebe1bdf6af (patch) | |
| tree | 2410a74f83f6a5f7a20c30b2b606da419edf8e96 /src/Module.zig | |
| parent | 8033767082f2178416fba8cb4a4b03fef961d318 (diff) | |
| parent | 2a3f3766a437faed13736c1ff505854b6737ae33 (diff) | |
| download | zig-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.zig | 26 |
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(), + }; } { |
