aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorVeikka Tuominen <git@vexu.eu>2022-07-11 23:51:57 +0300
committerVeikka Tuominen <git@vexu.eu>2022-07-12 12:50:59 +0300
commit5d22204d2dbf686d8b827eca15253914ef9543ab (patch)
tree9c5e331329593fc8bc896261416513c0d5acddbb /src/Module.zig
parent7d2e14267985df0226a5deee96d0c17c94bf6eb2 (diff)
downloadzig-5d22204d2dbf686d8b827eca15253914ef9543ab.tar.gz
zig-5d22204d2dbf686d8b827eca15253914ef9543ab.zip
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 { ^ ```
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig9
1 files changed, 9 insertions, 0 deletions
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(),
+ });
}
{