diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-07-11 23:51:57 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-07-12 12:50:59 +0300 |
| commit | 5d22204d2dbf686d8b827eca15253914ef9543ab (patch) | |
| tree | 9c5e331329593fc8bc896261416513c0d5acddbb /src/Module.zig | |
| parent | 7d2e14267985df0226a5deee96d0c17c94bf6eb2 (diff) | |
| download | zig-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.zig | 9 |
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(), + }); } { |
