aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/extern_struct_zero_size_fields.zig
diff options
context:
space:
mode:
authorAdamGoertz <36753247+AdamGoertz@users.noreply.github.com>2023-07-29 12:45:01 -0400
committerGitHub <noreply@github.com>2023-07-29 12:45:01 -0400
commit796927b900ad4b774c30d1cb545d606f23040d2f (patch)
tree7fd53185ae5dfadce29a8ab95f27d5bade0ae05c /test/behavior/extern_struct_zero_size_fields.zig
parent8d1805f81c97a0b773772e86aa39f26c894b7985 (diff)
downloadzig-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.zig21
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;
+}