diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-04-02 19:12:08 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-04-02 19:18:41 -0700 |
| commit | 91eb1af9177d774158d888484023e3bf0be65412 (patch) | |
| tree | 8aafa2cc145b16cfaf854980e58bbca0aff8f29f /src/Module.zig | |
| parent | 3432e66faf8940bbbfc7ee24d0e17e6127e66bf6 (diff) | |
| download | zig-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.zig | 14 |
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, }; } |
