| ... | ... | @@ -3207,13 +3207,22 @@ pub fn semaPkg(mod: *Module, pkg: *Package) !void { |
| 3207 | 3207 | } |
| 3208 | 3208 | |
| 3209 | 3209 | pub fn semaFile(mod: *Module, file: *Scope.File) InnerError!void { |
| 3210 | | if (file.status == .success_air) return; |
| 3211 | | |
| 3212 | 3210 | const tracy = trace(@src()); |
| 3213 | 3211 | defer tracy.end(); |
| 3214 | 3212 | |
| 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 | |
| 3215 | 3225 | assert(file.zir_loaded); |
| 3216 | | assert(file.status == .success_zir); |
| 3217 | 3226 | |
| 3218 | 3227 | const gpa = mod.gpa; |
| 3219 | 3228 | var decl_arena = std.heap.ArenaAllocator.init(gpa); |
| ... | ... | @@ -3642,6 +3651,8 @@ pub fn scanNamespace( |
| 3642 | 3651 | bit_bag_index += 1; |
| 3643 | 3652 | } |
| 3644 | 3653 | const flags = @truncate(u4, cur_bit_bag); |
| 3654 | cur_bit_bag >>= 4; |
| 3655 | |
| 3645 | 3656 | const decl_sub_index = extra_index; |
| 3646 | 3657 | extra_index += 6; |
| 3647 | 3658 | extra_index += @truncate(u1, flags >> 2); |
| ... | ... | @@ -3726,6 +3737,7 @@ fn scanDecl(iter: *ScanDeclIter, decl_sub_index: usize, flags: u4) InnerError!vo |
| 3726 | 3737 | }, |
| 3727 | 3738 | else => zir.nullTerminatedString(decl_name_index), |
| 3728 | 3739 | }; |
| 3740 | log.debug("scan decl {s} is_pub={}", .{ decl_name, is_pub }); |
| 3729 | 3741 | |
| 3730 | 3742 | // We create a Decl for it regardless of analysis status. |
| 3731 | 3743 | const gop = try namespace.decls.getOrPut(gpa, decl_name); |