From 4163005eb53173356af6ce24d4e3df30363a48d9 Mon Sep 17 00:00:00 2001 From: Stephen Gutekanst Date: Sun, 10 Jul 2022 21:22:08 -0700 Subject: [PATCH] gpu: ref all decls in test Signed-off-by: Stephen Gutekanst --- gpu/src/main.zig | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/gpu/src/main.zig b/gpu/src/main.zig index 2ef4cbf4..04c6149b 100644 --- a/gpu/src/main.zig +++ b/gpu/src/main.zig @@ -33,3 +33,45 @@ pub const Surface = @import("Surface.zig"); pub const SwapChain = @import("SwapChain.zig"); pub const Texture = @import("Texture.zig"); pub const TextureView = @import("TextureView.zig"); + +test { + refAllDecls(@import("Adapter.zig")); + refAllDecls(@import("BindGroup.zig")); + refAllDecls(@import("BindGroupLayout.zig")); + refAllDecls(@import("Buffer.zig")); + refAllDecls(@import("CommandBuffer.zig")); + refAllDecls(@import("CommandEncoder.zig")); + refAllDecls(@import("ComputePassEncoder.zig")); + refAllDecls(@import("ComputePipeline.zig")); + refAllDecls(@import("Device.zig")); + refAllDecls(@import("ExternalTexture.zig")); + refAllDecls(@import("Instance.zig")); + refAllDecls(@import("PipelineLayout.zig")); + refAllDecls(@import("QuerySet.zig")); + refAllDecls(@import("Queue.zig")); + refAllDecls(@import("RenderBundle.zig")); + refAllDecls(@import("RenderBundleEncoder.zig")); + refAllDecls(@import("RenderPassEncoder.zig")); + refAllDecls(@import("RenderPipeline.zig")); + refAllDecls(@import("Sampler.zig")); + refAllDecls(@import("ShaderModule.zig")); + refAllDecls(@import("Surface.zig")); + refAllDecls(@import("SwapChain.zig")); + refAllDecls(@import("Texture.zig")); + refAllDecls(@import("TextureView.zig")); +} + +fn refAllDecls(comptime T: type) void { + @setEvalBranchQuota(10000); + inline for (comptime @import("std").meta.declarations(T)) |decl| { + if (decl.is_pub) { + if (@TypeOf(@field(T, decl.name)) == type) { + switch (@typeInfo(@field(T, decl.name))) { + .Struct, .Enum, .Union, .Opaque => refAllDecls(@field(T, decl.name)), + else => {}, + } + } + _ = @field(T, decl.name); + } + } +}