aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-04-02 19:12:08 -0700
committerAndrew Kelley <andrew@ziglang.org>2022-04-02 19:18:41 -0700
commit91eb1af9177d774158d888484023e3bf0be65412 (patch)
tree8aafa2cc145b16cfaf854980e58bbca0aff8f29f /src/Module.zig
parent3432e66faf8940bbbfc7ee24d0e17e6127e66bf6 (diff)
downloadzig-91eb1af9177d774158d888484023e3bf0be65412.tar.gz
zig-91eb1af9177d774158d888484023e3bf0be65412.zip
stage2: more resilient error handling
* If more than one error is reported for the same Decl, the first error message is kept and the second one discarded. * Prevent functions from being sent to codegen backends if there were any errors resolving any of their parameter types or return type.
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/Module.zig b/src/Module.zig
index 154c7426d2..fdf61c4bf6 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -4854,7 +4854,12 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem
error.GenericPoison => unreachable,
error.ComptimeReturn => unreachable,
error.ComptimeBreak => unreachable,
- error.AnalysisFail => {},
+ error.AnalysisFail => {
+ // In this case our function depends on a type that had a compile error.
+ // We should not try to lower this function.
+ decl.analysis = .dependency_failure;
+ return error.AnalysisFail;
+ },
else => |e| return e,
};
@@ -4867,7 +4872,12 @@ pub fn analyzeFnBody(mod: *Module, decl: *Decl, func: *Fn, arena: Allocator) Sem
error.GenericPoison => unreachable,
error.ComptimeReturn => unreachable,
error.ComptimeBreak => unreachable,
- error.AnalysisFail => {},
+ error.AnalysisFail => {
+ // In this case our function depends on a type that had a compile error.
+ // We should not try to lower this function.
+ decl.analysis = .dependency_failure;
+ return error.AnalysisFail;
+ },
else => |e| return e,
};
}