feat(std.testing.refAllDeclsRecursive): allow for opaque extern declarations

This commit is contained in:
Carmen 2025-12-02 14:36:43 +01:00
parent 95f93a0b28
commit d323c6a47e
No known key found for this signature in database

View file

@ -1197,13 +1197,13 @@ pub fn refAllDecls(comptime T: type) void {
pub fn refAllDeclsRecursive(comptime T: type) void {
if (!builtin.is_test) return;
inline for (comptime std.meta.declarations(T)) |decl| {
if (@TypeOf(@field(T, decl.name)) == type) {
const decl_ref = &@field(T, decl.name);
if (@typeInfo(@TypeOf(decl_ref)).pointer.child == type) {
switch (@typeInfo(@field(T, decl.name))) {
.@"struct", .@"enum", .@"union", .@"opaque" => refAllDeclsRecursive(@field(T, decl.name)),
else => {},
}
}
_ = &@field(T, decl.name);
}
}