From 2a3f3766a437faed13736c1ff505854b6737ae33 Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Tue, 12 Jul 2022 10:49:37 +0300 Subject: stage2: handle parser notes in a more general way --- src/Module.zig | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) (limited to 'src/Module.zig') diff --git a/src/Module.zig b/src/Module.zig index aa5cddd35c..f9cfc5e54e 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -3324,26 +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", .{}); - } else if (parse_err.tag == .c_style_container) { - const note = file.tree.errors[1]; - try mod.errNoteNonLazy(.{ - .file_scope = file, - .parent_decl_node = 0, - .lazy = .{ .byte_abs = token_starts[note.token] }, - }, err_msg, "to declare a container do 'const {s} = {s}'", .{ - file.tree.tokenSlice(note.token), note.extra.expected_tag.symbol(), - }); + } + + 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(), + }; } { -- cgit v1.2.3