| author | |
| committer | |
| log | d7a27bf803fd29c499090c7bd0460fae9f0cf0f7 |
| tree | 155a2d73dc37e03aba25059ff82c0164456dad49 |
| parent | fc48bbdf90bbfa0ed1f5a95e9e5412351d1df6d7 |
3 files changed, 26 insertions(+), 1 deletions(-)
src/translate_c.zig+5| ... | ... | @@ -2505,6 +2505,11 @@ fn transInitListExprRecord( |
| 2505 | 2505 | var field_inits = std.ArrayList(ast.Payload.ContainerInit.Initializer).init(c.gpa); |
| 2506 | 2506 | defer field_inits.deinit(); |
| 2507 | 2507 | |
| 2508 | if (init_count == 0) { | |
| 2509 | const source_loc = @as(*const clang.Expr, @ptrCast(expr)).getBeginLoc(); | |
| 2510 | return transZeroInitExpr(c, scope, source_loc, ty); | |
| 2511 | } | |
| 2512 | ||
| 2508 | 2513 | var init_i: c_uint = 0; |
| 2509 | 2514 | var it = record_def.field_begin(); |
| 2510 | 2515 | const end_it = record_def.field_end(); |
test/cases/translate_c/empty union initializer list.c	 created+20| ... | ... | @@ -0,0 +1,20 @@ |
| 1 | union U { | |
| 2 | int x; | |
| 3 | long y; | |
| 4 | }; | |
| 5 | ||
| 6 | void foo(void) { | |
| 7 | union U u = {}; | |
| 8 | } | |
| 9 | // translate-c | |
| 10 | // target=x86_64-linux | |
| 11 | // c_frontend=clang | |
| 12 | // | |
| 13 | // pub const union_U = extern union { | |
| 14 | // x: c_int, | |
| 15 | // y: c_long, | |
| 16 | // }; | |
| 17 | // pub export fn foo() void { | |
| 18 | // var u: union_U = @import("std").mem.zeroes(union_U); | |
| 19 | // _ = &u; | |
| 20 | // } |
test/cases/translate_c/static empty struct.c	+1-1| ... | ... | @@ -11,7 +11,7 @@ static inline void foo() { |
| 11 | 11 | // pub const struct_empty_struct = extern struct {}; |
| 12 | 12 | // pub fn foo() callconv(.C) void { |
| 13 | 13 | // const bar = struct { |
| 14 | // var static: struct_empty_struct = struct_empty_struct{}; | |
| 14 | // var static: struct_empty_struct = @import("std").mem.zeroes(struct_empty_struct); | |
| 15 | 15 | // }; |
| 16 | 16 | // _ = &bar; |
| 17 | 17 | // } |