| author | |
| committer | |
| log | b3c6d774d292e6e4ddf4cd54455c4ef3c6386d66 |
| tree | 782ba20f4fa00b095b1aec1db866833947b53882 |
| parent | 409cf4aeb826d8f7c35f0aa10bb0a8fe45188555 |
* the root struct decl name is fully qualified
this prevents error messages containing 'main.main'
* avoid declared here note when file struct is missing a member
It always points at the start of the file which might contain another
container misleading the user.8 files changed, 12 insertions(+), 11 deletions(-)
src/Module.zig+1| ... | @@ -4435,6 +4435,7 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { | ... | @@ -4435,6 +4435,7 @@ pub fn semaFile(mod: *Module, file: *File) SemaError!void { |
| 4435 | new_decl.alive = true; // This Decl corresponds to a File and is therefore always alive. | 4435 | new_decl.alive = true; // This Decl corresponds to a File and is therefore always alive. |
| 4436 | new_decl.analysis = .in_progress; | 4436 | new_decl.analysis = .in_progress; |
| 4437 | new_decl.generation = mod.generation; | 4437 | new_decl.generation = mod.generation; |
| 4438 | new_decl.name_fully_qualified = true; | ||
| 4438 | 4439 | ||
| 4439 | if (file.status == .success_zir) { | 4440 | if (file.status == .success_zir) { |
| 4440 | assert(file.zir_loaded); | 4441 | assert(file.zir_loaded); |
src/Sema.zig+5| ... | @@ -4353,6 +4353,11 @@ fn failWithBadMemberAccess( | ... | @@ -4353,6 +4353,11 @@ fn failWithBadMemberAccess( |
| 4353 | .Enum => "enum", | 4353 | .Enum => "enum", |
| 4354 | else => unreachable, | 4354 | else => unreachable, |
| 4355 | }; | 4355 | }; |
| 4356 | if (sema.mod.declIsRoot(agg_ty.getOwnerDecl())) { | ||
| 4357 | return sema.fail(block, field_src, "root struct of file '{}' has no member named '{s}'", .{ | ||
| 4358 | agg_ty.fmt(sema.mod), field_name, | ||
| 4359 | }); | ||
| 4360 | } | ||
| 4356 | const msg = msg: { | 4361 | const msg = msg: { |
| 4357 | const msg = try sema.errMsg(block, field_src, "{s} '{}' has no member named '{s}'", .{ | 4362 | const msg = try sema.errMsg(block, field_src, "{s} '{}' has no member named '{s}'", .{ |
| 4358 | kw_name, agg_ty.fmt(sema.mod), field_name, | 4363 | kw_name, agg_ty.fmt(sema.mod), field_name, |
test/cases/aarch64-macos/hello_world_with_updates.0.zig+1-2| ... | @@ -2,5 +2,4 @@ | ... | @@ -2,5 +2,4 @@ |
| 2 | // output_mode=Exe | 2 | // output_mode=Exe |
| 3 | // target=aarch64-macos | 3 | // target=aarch64-macos |
| 4 | // | 4 | // |
| 5 | // :109:9: error: struct 'tmp.tmp' has no member named 'main' | 5 | // :109:9: error: root struct of file 'tmp' has no member named 'main' |
| 6 | // :7:1: note: struct declared here |
test/cases/compile_errors/bogus_compile_var.zig+1-2| ... | @@ -5,5 +5,4 @@ export fn entry() usize { return @sizeOf(@TypeOf(x)); } | ... | @@ -5,5 +5,4 @@ export fn entry() usize { return @sizeOf(@TypeOf(x)); } |
| 5 | // backend=stage2 | 5 | // backend=stage2 |
| 6 | // target=native | 6 | // target=native |
| 7 | // | 7 | // |
| 8 | // :1:29: error: struct 'builtin.builtin' has no member named 'bogus' | 8 | // :1:29: error: root struct of file 'builtin' has no member named 'bogus' |
| 9 | // :1:1: note: struct declared here |
test/cases/compile_errors/issue_2032_compile_diagnostic_string_for_top_level_decl_type.zig+1-1| ... | @@ -7,5 +7,5 @@ export fn entry() void { | ... | @@ -7,5 +7,5 @@ export fn entry() void { |
| 7 | // backend=stage2 | 7 | // backend=stage2 |
| 8 | // target=native | 8 | // target=native |
| 9 | // | 9 | // |
| 10 | // :2:27: error: expected type 'u32', found 'tmp.tmp' | 10 | // :2:27: error: expected type 'u32', found 'tmp' |
| 11 | // :1:1: note: struct declared here | 11 | // :1:1: note: struct declared here |
test/cases/x86_64-linux/hello_world_with_updates.0.zig+1-2| ... | @@ -2,5 +2,4 @@ | ... | @@ -2,5 +2,4 @@ |
| 2 | // output_mode=Exe | 2 | // output_mode=Exe |
| 3 | // target=x86_64-linux | 3 | // target=x86_64-linux |
| 4 | // | 4 | // |
| 5 | // :109:9: error: struct 'tmp.tmp' has no member named 'main' | 5 | // :109:9: error: root struct of file 'tmp' has no member named 'main' |
| 6 | // :7:1: note: struct declared here |
test/cases/x86_64-macos/hello_world_with_updates.0.zig+1-2| ... | @@ -2,5 +2,4 @@ | ... | @@ -2,5 +2,4 @@ |
| 2 | // output_mode=Exe | 2 | // output_mode=Exe |
| 3 | // target=x86_64-macos | 3 | // target=x86_64-macos |
| 4 | // | 4 | // |
| 5 | // :109:9: error: struct 'tmp.tmp' has no member named 'main' | 5 | // :109:9: error: root struct of file 'tmp' has no member named 'main' |
| 6 | // :7:1: note: struct declared here |
test/cases/x86_64-windows/hello_world_with_updates.0.zig+1-2| ... | @@ -2,5 +2,4 @@ | ... | @@ -2,5 +2,4 @@ |
| 2 | // output_mode=Exe | 2 | // output_mode=Exe |
| 3 | // target=x86_64-windows | 3 | // target=x86_64-windows |
| 4 | // | 4 | // |
| 5 | // :130:9: error: struct 'tmp.tmp' has no member named 'main' | 5 | // :130:9: error: root struct of file 'tmp' has no member named 'main' |
| 6 | // :7:1: note: struct declared here |