diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-04-28 23:16:13 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-04-28 23:16:13 -0700 |
| commit | d36a31ba758348ed79de395bf1eb1ae9c9db30bf (patch) | |
| tree | 491adb9253c373a9893c3b2fd030ff80b55d5de1 /src/Module.zig | |
| parent | c60d8f017ea698c5fe4c7c6046f8ca09f0b8bf1d (diff) | |
| download | zig-d36a31ba758348ed79de395bf1eb1ae9c9db30bf.tar.gz zig-d36a31ba758348ed79de395bf1eb1ae9c9db30bf.zip | |
stage2: fix scanDecls not advancing the field bits
Also fix `semaFile` not handling compile errors properly.
Diffstat (limited to 'src/Module.zig')
| -rw-r--r-- | src/Module.zig | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/Module.zig b/src/Module.zig index 0702eaa8bc..d644a01d6b 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -3207,13 +3207,22 @@ pub fn semaPkg(mod: *Module, pkg: *Package) !void { } pub fn semaFile(mod: *Module, file: *Scope.File) InnerError!void { - if (file.status == .success_air) return; - const tracy = trace(@src()); defer tracy.end(); + switch (file.status) { + .never_loaded => unreachable, + + .retryable_failure, + .parse_failure, + .astgen_failure, + => return error.AnalysisFail, + + .success_zir => {}, + .success_air => return, + } + assert(file.zir_loaded); - assert(file.status == .success_zir); const gpa = mod.gpa; var decl_arena = std.heap.ArenaAllocator.init(gpa); @@ -3642,6 +3651,8 @@ pub fn scanNamespace( bit_bag_index += 1; } const flags = @truncate(u4, cur_bit_bag); + cur_bit_bag >>= 4; + const decl_sub_index = extra_index; extra_index += 6; extra_index += @truncate(u1, flags >> 2); @@ -3726,6 +3737,7 @@ fn scanDecl(iter: *ScanDeclIter, decl_sub_index: usize, flags: u4) InnerError!vo }, else => zir.nullTerminatedString(decl_name_index), }; + log.debug("scan decl {s} is_pub={}", .{ decl_name, is_pub }); // We create a Decl for it regardless of analysis status. const gop = try namespace.decls.getOrPut(gpa, decl_name); |
