diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Compilation.zig | 28 | ||||
| -rw-r--r-- | src/Module.zig | 7 |
2 files changed, 19 insertions, 16 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig index ac26b89926..6e6fab5cc2 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -1696,17 +1696,15 @@ pub fn totalErrorCount(self: *Compilation) usize { // the previous parse success, including compile errors, but we cannot // emit them until the file succeeds parsing. for (module.failed_decls.items()) |entry| { - if (entry.key.namespace.file_scope.status == .parse_failure) { - continue; + if (entry.key.namespace.file_scope.okToReportErrors()) { + total += 1; } - total += 1; } if (module.emit_h) |emit_h| { for (emit_h.failed_decls.items()) |entry| { - if (entry.key.namespace.file_scope.status == .parse_failure) { - continue; + if (entry.key.namespace.file_scope.okToReportErrors()) { + total += 1; } - total += 1; } } } @@ -1767,21 +1765,19 @@ pub fn getAllErrorsAlloc(self: *Compilation) !AllErrors { } } for (module.failed_decls.items()) |entry| { - if (entry.key.namespace.file_scope.status == .parse_failure) { - // Skip errors for Decls within files that had a parse failure. - // We'll try again once parsing succeeds. - continue; + // Skip errors for Decls within files that had a parse failure. + // We'll try again once parsing succeeds. + if (entry.key.namespace.file_scope.okToReportErrors()) { + try AllErrors.add(module, &arena, &errors, entry.value.*); } - try AllErrors.add(module, &arena, &errors, entry.value.*); } if (module.emit_h) |emit_h| { for (emit_h.failed_decls.items()) |entry| { - if (entry.key.namespace.file_scope.status == .parse_failure) { - // Skip errors for Decls within files that had a parse failure. - // We'll try again once parsing succeeds. - continue; + // Skip errors for Decls within files that had a parse failure. + // We'll try again once parsing succeeds. + if (entry.key.namespace.file_scope.okToReportErrors()) { + try AllErrors.add(module, &arena, &errors, entry.value.*); } - try AllErrors.add(module, &arena, &errors, entry.value.*); } } for (module.failed_exports.items()) |entry| { diff --git a/src/Module.zig b/src/Module.zig index f31b243819..2227e47d72 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -1138,6 +1138,13 @@ pub const Scope = struct { const loc = std.zig.findLineColumn(file.source.bytes, src); std.debug.print("{s}:{d}:{d}\n", .{ file.sub_file_path, loc.line + 1, loc.column + 1 }); } + + pub fn okToReportErrors(file: File) bool { + return switch (file.status) { + .parse_failure, .astgen_failure => false, + else => true, + }; + } }; /// This is the context needed to semantically analyze ZIR instructions and |
