Commit 28dbc58837
Changed files (3)
lib
std
test
stage1
behavior
lib/std/zig/parser_test.zig
@@ -1,4 +1,4 @@
-test "zig fmt: noasync block" {
+test "zig fmt: errdefer with payload" {
try testCanonical(
\\pub fn main() anyerror!void {
\\ errdefer |a| x += 1;
test/stage1/behavior/defer.zig
@@ -1,6 +1,7 @@
const std = @import("std");
const expect = std.testing.expect;
const expectEqual = std.testing.expectEqual;
+const expectError = std.testing.expectError;
var result: [3]u8 = undefined;
var index: usize = undefined;
@@ -105,10 +106,7 @@ test "errdefer with payload" {
return error.One;
}
fn doTheTest() void {
- _ = foo() catch |err| switch (err) {
- error.One => {},
- else => unreachable,
- };
+ expectError(error.One, foo());
}
};
S.doTheTest();
test/compile_errors.zig
@@ -2,6 +2,18 @@ const tests = @import("tests.zig");
const std = @import("std");
pub fn addCases(cases: *tests.CompileErrorContext) void {
+ cases.addTest("unused variable error on errdefer",
+ \\fn foo() !void {
+ \\ errdefer |a| unreachable;
+ \\ return error.A;
+ \\}
+ \\export fn entry() void {
+ \\ foo() catch unreachable;
+ \\}
+ , &[_][]const u8{
+ "tmp.zig:2:15: error: unused variable: 'a'",
+ });
+
cases.addTest("shift on type with non-power-of-two size",
\\export fn entry() void {
\\ const S = struct {