diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-06-10 14:11:59 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-06-11 23:49:33 +0300 |
| commit | 0333ff4476d0132a2397122dcab964de7fc0f2d3 (patch) | |
| tree | 8032dc588ab76313580feec71e07077ab1209960 /test/behavior | |
| parent | 488e1e5f51905485f9db37038e74bdea31ebd16e (diff) | |
| download | zig-0333ff4476d0132a2397122dcab964de7fc0f2d3.tar.gz zig-0333ff4476d0132a2397122dcab964de7fc0f2d3.zip | |
stage2: make `error{}` the same size as `anyerror`
Having `error{}` be a zero bit type causes issues when it interracts
with empty inferred error sets which are the same size as `anyerror`.
Diffstat (limited to 'test/behavior')
| -rw-r--r-- | test/behavior/error.zig | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/test/behavior/error.zig b/test/behavior/error.zig index ac51ec1eae..c9697a0f82 100644 --- a/test/behavior/error.zig +++ b/test/behavior/error.zig @@ -453,65 +453,6 @@ test "optional error set is the same size as error set" { comptime try expect(S.returnsOptErrSet() == null); } -test "optional error set with only one error is the same size as bool" { - if (builtin.zig_backend == .stage1) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - - const E = error{only}; - comptime try expect(@sizeOf(?E) == @sizeOf(bool)); - comptime try expect(@alignOf(?E) == @alignOf(bool)); - const S = struct { - fn gimmeNull() ?E { - return null; - } - fn gimmeErr() ?E { - return error.only; - } - }; - try expect(S.gimmeNull() == null); - try expect(error.only == S.gimmeErr().?); - comptime try expect(S.gimmeNull() == null); - comptime try expect(error.only == S.gimmeErr().?); -} - -test "optional empty error set" { - if (builtin.zig_backend == .stage1) return error.SkipZigTest; - - comptime try expect(@sizeOf(error{}!void) == @sizeOf(void)); - comptime try expect(@alignOf(error{}!void) == @alignOf(void)); - - var x: ?error{} = undefined; - if (x != null) { - @compileError("test failed"); - } -} - -test "empty error set plus zero-bit payload" { - if (builtin.zig_backend == .stage1) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO - - comptime try expect(@sizeOf(error{}!void) == @sizeOf(void)); - comptime try expect(@alignOf(error{}!void) == @alignOf(void)); - - var x: error{}!void = undefined; - if (x) |payload| { - if (payload != {}) { - @compileError("test failed"); - } - } else |_| { - @compileError("test failed"); - } - const S = struct { - fn empty() error{}!void {} - fn inferred() !void { - return empty(); - } - }; - try S.inferred(); -} - test "nested catch" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
