diff options
| author | AdamGoertz <36753247+AdamGoertz@users.noreply.github.com> | 2023-07-29 12:45:01 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-29 12:45:01 -0400 |
| commit | 796927b900ad4b774c30d1cb545d606f23040d2f (patch) | |
| tree | 7fd53185ae5dfadce29a8ab95f27d5bade0ae05c /test/behavior/extern_struct_zero_size_fields.zig | |
| parent | 8d1805f81c97a0b773772e86aa39f26c894b7985 (diff) | |
| download | zig-796927b900ad4b774c30d1cb545d606f23040d2f.tar.gz zig-796927b900ad4b774c30d1cb545d606f23040d2f.zip | |
Allow zero-sized fields in extern structs (#16404)
This change allows the following types to appear in extern structs:
* Zero-bit integers
* void
* zero-sized structs and packed structs
* enums with zero-bit backing integers
* arrays of any length with zero-size elements
Diffstat (limited to 'test/behavior/extern_struct_zero_size_fields.zig')
| -rw-r--r-- | test/behavior/extern_struct_zero_size_fields.zig | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/behavior/extern_struct_zero_size_fields.zig b/test/behavior/extern_struct_zero_size_fields.zig new file mode 100644 index 0000000000..1b13532f11 --- /dev/null +++ b/test/behavior/extern_struct_zero_size_fields.zig @@ -0,0 +1,21 @@ +const E = enum(u0) { + the_only_possible_value, +}; + +const S = struct {}; + +const T = extern struct { + foo: u0 = 0, + bar: void = {}, + baz: struct {} = .{}, + ayy: E = .the_only_possible_value, + arr: [0]u0 = .{}, + matey: [128]void = [_]void{{}} ** 128, + running_out_of_ideas: packed struct {} = .{}, + one_more: [256]S = [_]S{.{}} ** 256, +}; + +test { + var t: T = .{}; + _ = t; +} |
