Commit cf90a5e451
Changed files (2)
doc/langref/test_tagged_union_with_tag_values.zig
@@ -0,0 +1,17 @@
+const std = @import("std");
+const expect = std.testing.expect;
+
+const Tagged = union(enum(u32)) {
+ int: i64 = 123,
+ boolean: bool = 67,
+};
+
+test "tag values" {
+ const int: Tagged = .{ .int = -40 };
+ try expect(@intFromEnum(int) == 123);
+
+ const boolean: Tagged = .{ .boolean = false };
+ try expect(@intFromEnum(boolean) == 67);
+}
+
+// test
doc/langref.html.in
@@ -2469,6 +2469,13 @@ or
</p>
{#code|test_union_method.zig#}
+ <p>
+ Unions with inferred enum tag types can also assign ordinal values to their inferred tag.
+ This requires the tag to specify an explicit integer type.
+ {#link|@intFromEnum#} can be used to access the ordinal value corresponding to the active field.
+ </p>
+ {#code|test_tagged_union_with_tag_values.zig#}
+
<p>
{#link|@tagName#} can be used to return a {#link|comptime#}
{#syntax#}[:0]const u8{#endsyntax#} value representing the field name: