aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-04-28 23:16:13 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-04-28 23:16:13 -0700
commitd36a31ba758348ed79de395bf1eb1ae9c9db30bf (patch)
tree491adb9253c373a9893c3b2fd030ff80b55d5de1 /src/Module.zig
parentc60d8f017ea698c5fe4c7c6046f8ca09f0b8bf1d (diff)
downloadzig-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.zig18
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);