commit fda143d5d81da852af73386a2100e18784bd0d3c (tree)
parent 2409041e627012baa770acfd21c407ef9ba46777
Author: Daniele Cocca <daniele.cocca@gmail.com>
Date: Thu, 28 Apr 2022 22:59:16 +0100
CBE: fix renderValue() for struct fields with no runtime bits
These shouldn't count towards the total emitted, or the stray comma
separators would cause compilation errors.
Diffstat:
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
@@ -821,12 +821,14 @@ pub const DeclGen = struct {
try dg.renderTypecast(writer, ty);
try writer.writeAll("){");
- for (field_vals) |field_val, i| {
- const field_ty = ty.structFieldType(i);
+ var i: usize = 0;
+ for (field_vals) |field_val, field_index| {
+ const field_ty = ty.structFieldType(field_index);
if (!field_ty.hasRuntimeBits()) continue;
if (i != 0) try writer.writeAll(",");
try dg.renderValue(writer, field_ty, field_val, location);
+ i += 1;
}
try writer.writeAll("}");
diff --git a/test/behavior/struct.zig b/test/behavior/struct.zig
@@ -299,7 +299,6 @@ test "struct point to self" {
test "void struct fields" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
- if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
const foo = VoidStructFieldsFoo{