From 5d22204d2dbf686d8b827eca15253914ef9543ab Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Mon, 11 Jul 2022 23:51:57 +0300 Subject: parser: add helpful error for C style container declarations ```zig // a.zig struct Foo { a: u32, }; ``` before: ``` a.zig:1:1: error: expected test, comptime, var decl, or container field, found 'struct' struct Foo { ^ ``` after: ``` a.zig:1:8: error: 'struct Foo' is invalid struct Foo { ^ a.zig:1:8: note: to declare a container do 'const Foo = struct' struct Foo { ^ ``` --- src/Module.zig | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/Module.zig') diff --git a/src/Module.zig b/src/Module.zig index 3c4962c587..aa5cddd35c 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -3335,6 +3335,15 @@ pub fn astGenFile(mod: *Module, file: *File) !void { .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(), + }); } { -- cgit v1.2.3