authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-04-28 23:16:13-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-04-28 23:16:13-07:00
logd36a31ba758348ed79de395bf1eb1ae9c9db30bf
tree491adb9253c373a9893c3b2fd030ff80b55d5de1
parentc60d8f017ea698c5fe4c7c6046f8ca09f0b8bf1d

stage2: fix scanDecls not advancing the field bits

Also fix `semaFile` not handling compile errors properly.

1 files changed, 15 insertions(+), 3 deletions(-)

src/Module.zig+15-3
......@@ -3207,13 +3207,22 @@ pub fn semaPkg(mod: *Module, pkg: *Package) !void {
32073207}
32083208
32093209pub fn semaFile(mod: *Module, file: *Scope.File) InnerError!void {
3210 if (file.status == .success_air) return;
3211
32123210 const tracy = trace(@src());
32133211 defer tracy.end();
32143212
3213 switch (file.status) {
3214 .never_loaded => unreachable,
3215
3216 .retryable_failure,
3217 .parse_failure,
3218 .astgen_failure,
3219 => return error.AnalysisFail,
3220
3221 .success_zir => {},
3222 .success_air => return,
3223 }
3224
32153225 assert(file.zir_loaded);
3216 assert(file.status == .success_zir);
32173226
32183227 const gpa = mod.gpa;
32193228 var decl_arena = std.heap.ArenaAllocator.init(gpa);
......@@ -3642,6 +3651,8 @@ pub fn scanNamespace(
36423651 bit_bag_index += 1;
36433652 }
36443653 const flags = @truncate(u4, cur_bit_bag);
3654 cur_bit_bag >>= 4;
3655
36453656 const decl_sub_index = extra_index;
36463657 extra_index += 6;
36473658 extra_index += @truncate(u1, flags >> 2);
......@@ -3726,6 +3737,7 @@ fn scanDecl(iter: *ScanDeclIter, decl_sub_index: usize, flags: u4) InnerError!vo
37263737 },
37273738 else => zir.nullTerminatedString(decl_name_index),
37283739 };
3740 log.debug("scan decl {s} is_pub={}", .{ decl_name, is_pub });
37293741
37303742 // We create a Decl for it regardless of analysis status.
37313743 const gop = try namespace.decls.getOrPut(gpa, decl_name);