diff options
Diffstat (limited to 'test/behavior/error.zig')
| -rw-r--r-- | test/behavior/error.zig | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/behavior/error.zig b/test/behavior/error.zig index 2e243d1d23..028bd26047 100644 --- a/test/behavior/error.zig +++ b/test/behavior/error.zig @@ -6,12 +6,18 @@ const expectEqual = std.testing.expectEqual; const mem = std.mem; test "error values" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + const a = @errorToInt(error.err1); const b = @errorToInt(error.err2); try expect(a != b); } test "redefinition of error values allowed" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + shouldBeNotEqual(error.AnError, error.SecondError); } fn shouldBeNotEqual(a: anyerror, b: anyerror) void { @@ -19,6 +25,10 @@ fn shouldBeNotEqual(a: anyerror, b: anyerror) void { } test "error binary operator" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + const a = errBinaryOperatorG(true) catch 3; const b = errBinaryOperatorG(false) catch 3; try expect(a == 3); @@ -29,6 +39,9 @@ fn errBinaryOperatorG(x: bool) anyerror!isize { } test "empty error union" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + const x = error{} || error{}; _ = x; } @@ -48,10 +61,18 @@ pub fn baz() anyerror!i32 { } test "error wrapping" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + try expect((baz() catch unreachable) == 15); } test "unwrap simple value from error" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + const i = unwrapSimpleValueFromErrorDo() catch unreachable; try expect(i == 13); } @@ -60,6 +81,10 @@ fn unwrapSimpleValueFromErrorDo() anyerror!isize { } test "error return in assignment" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + doErrReturnInAssignment() catch unreachable; } @@ -73,12 +98,19 @@ fn makeANonErr() anyerror!i32 { } test "syntax: optional operator in front of error union operator" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + comptime { try expect(?(anyerror!i32) == ?(anyerror!i32)); } } test "widen cast integer payload of error union function call" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + const S = struct { fn errorable() !u64 { var x = @as(u64, try number()); @@ -93,12 +125,19 @@ test "widen cast integer payload of error union function call" { } test "debug info for optional error set" { + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + const SomeError = error{Hello}; var a_local_variable: ?SomeError = null; _ = a_local_variable; } test "implicit cast to optional to error union to return result loc" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + const S = struct { fn entry() !void { var x: Foo = undefined; @@ -118,6 +157,9 @@ test "implicit cast to optional to error union to return result loc" { } test "error: fn returning empty error set can be passed as fn returning any error" { + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + entry(); comptime entry(); } @@ -482,6 +524,9 @@ test "error union comptime caching" { test "@errorName" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; try expect(mem.eql(u8, @errorName(error.AnError), "AnError")); try expect(mem.eql(u8, @errorName(error.ALongerErrorName), "ALongerErrorName")); @@ -494,6 +539,9 @@ fn gimmeItBroke() anyerror { test "@errorName sentinel length matches slice length" { if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; const name = testBuiltinErrorName(error.FooBar); const length: usize = 6; |
