authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-10-27 01:22:48-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2017-10-27 01:22:48-04:00
log4c306af4eb79071c966b99e877970f0a4582d891
treecd95da12c74609d1236ef64ac334c00e74358868
parentf1072d0d9fba397b3920015fd854414868e6ea17

add test case for previous commit


2 files changed, 34 insertions(+), 0 deletions(-)

test/behavior.zig+1
......@@ -40,6 +40,7 @@ comptime {
4040 _ = @import("cases/this.zig");
4141 _ = @import("cases/try.zig");
4242 _ = @import("cases/undefined.zig");
43 _ = @import("cases/union.zig");
4344 _ = @import("cases/var_args.zig");
4445 _ = @import("cases/void.zig");
4546 _ = @import("cases/while.zig");
test/cases/union.zig created+33
......@@ -0,0 +1,33 @@
1const assert = @import("std").debug.assert;
2
3const Value = enum {
4 Int: u64,
5 Array: [9]u8,
6};
7
8const Agg = struct {
9 val1: Value,
10 val2: Value,
11};
12
13const v1 = Value.Int { 1234 };
14const v2 = Value.Array { []u8{3} ** 9 };
15
16const err = (%Agg)(Agg {
17 .val1 = v1,
18 .val2 = v2,
19});
20
21const array = []Value { v1, v2, v1, v2};
22
23
24test "unions embedded in aggregate types" {
25 switch (array[1]) {
26 Value.Array => |arr| assert(arr[4] == 3),
27 else => unreachable,
28 }
29 switch((%%err).val1) {
30 Value.Int => |x| assert(x == 1234),
31 else => unreachable,
32 }
33}