const tests = @import("tests.zig"); pub fn addCases(cases: *tests.GenHContext) void { cases.add("declare enum", \\const Foo = extern enum { A, B, C }; \\export fn entry(foo: Foo) void { } , \\enum Foo { \\ A = 0, \\ B = 1, \\ C = 2 \\}; \\ \\TEST_EXPORT void entry(enum Foo foo); \\ ); cases.add("declare struct", \\const Foo = extern struct { \\ A: i32, \\ B: f32, \\ C: bool, \\}; \\export fn entry(foo: Foo) void { } , \\struct Foo { \\ int32_t A; \\ float B; \\ bool C; \\}; \\ \\TEST_EXPORT void entry(struct Foo foo); \\ ); cases.add("declare union", \\const Foo = extern union { \\ A: i32, \\ B: f32, \\ C: bool, \\}; \\export fn entry(foo: Foo) void { } , \\union Foo { \\ int32_t A; \\ float B; \\ bool C; \\}; \\ \\TEST_EXPORT void entry(union Foo foo); \\ ); cases.add("declare opaque type", \\export const Foo = @OpaqueType(); \\ \\export fn entry(foo: ?*Foo) void { } , \\struct Foo; \\ \\TEST_EXPORT void entry(struct Foo * foo); ); cases.add("array field-type", \\const Foo = extern struct { \\ A: [2]i32, \\ B: [4]*u32, \\}; \\export fn entry(foo: Foo, bar: [3]u8) void { } , \\struct Foo { \\ int32_t A[2]; \\ uint32_t * B[4]; \\}; \\ \\TEST_EXPORT void entry(struct Foo foo, uint8_t bar[]); \\ ); }