# Fix checkAllAllocationFailures being too strict when checking arg types · gitcafe/zig

[View on GitCafe](https://git.cafe/gitcafe/zig/commit/43770c010321d965aba716d717e8470ae0ae966d)

Repository: [gitcafe/zig](https://git.cafe/gitcafe/zig)

Visibility: public

Requested revision: 43770c010321d965aba716d717e8470ae0ae966d

Requested commit: 43770c010321d965aba716d717e8470ae0ae966d

Commit: 43770c010321d965aba716d717e8470ae0ae966d

Tree: 187ed372da78f8732180622e41e0f784faf38915

Author: Ryan Liptak

Committer: Veikka Tuominen

## Message

````
Fix checkAllAllocationFailures being too strict when checking arg types

Before this would fail to compile:

```
fn testFn(alloc: std.mem.Allocator, arr: []const u8) !void {
    _ = alloc;
    _ = arr;
}

test "checkAll" {
    var arr = [_]u8{ 1, 2, 3 };
    try std.testing.checkAllAllocationFailures(std.testing.allocator, testFn, .{arr[0..]});
}
```

with the error `error: Unexpected type for extra argument at index 0: expected []const u8, found *[3]u8`

By removing this strict equality check, we allow the type checking to be done during the `@field(args, arg_i_str) = @field(extra_args, field.name);` instead, which then allows for things like type coercion to work, but still will give a compile error if the types are incorrect. So, after this change, the above succeeds (because `*[3]u8` can be coerced to `[]const u8`).

The new compile error when providing an incorrect type that can't be coerced looks like this:

```
zig/lib/std/testing.zig:639:35: error: expected type '[]const u8', found '*[3]u32'
        @field(args, arg_i_str) = @field(extra_args, field.name);
                                  ^
```

````

## Parents

- [b2486fbc5e83cca2ce31a6a16b2ad4ff8df170df](https://git.cafe/gitcafe/zig/commit/b2486fbc5e83cca2ce31a6a16b2ad4ff8df170df?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zig/tree/43770c010321d965aba716d717e8470ae0ae966d?format=markdown)
