From 83a4bb6e6957325b744a08e16cab6b2a4a045f3e Mon Sep 17 00:00:00 2001 From: InKryption <59504965+InKryption@users.noreply.github.com> Date: Thu, 28 Oct 2021 16:59:54 +0100 Subject: [PATCH] Make `std.meta.trait.isContainer` true for opaques Makes `std.meta.trait.hasFn` work as expected for opaque types with function declarations. Alternative is to add clause directly to `std.meta.trait.hasFn` to account for opaque types. --- lib/std/meta/trait.zig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/std/meta/trait.zig b/lib/std/meta/trait.zig index 6b6124ebeb..7aaceddfb6 100644 --- a/lib/std/meta/trait.zig +++ b/lib/std/meta/trait.zig @@ -354,7 +354,7 @@ test "std.meta.trait.isConstPtr" { pub fn isContainer(comptime T: type) bool { return switch (@typeInfo(T)) { - .Struct, .Union, .Enum => true, + .Struct, .Union, .Enum, .Opaque => true, else => false, }; } @@ -368,10 +368,12 @@ test "std.meta.trait.isContainer" { A, B, }; + const TestOpaque = opaque {}; try testing.expect(isContainer(TestStruct)); try testing.expect(isContainer(TestUnion)); try testing.expect(isContainer(TestEnum)); + try testing.expect(isContainer(TestOpaque)); try testing.expect(!isContainer(u8)); }