diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/cases/taking_pointer_of_global_tagged_union.zig | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/cases/taking_pointer_of_global_tagged_union.zig b/test/cases/taking_pointer_of_global_tagged_union.zig new file mode 100644 index 0000000000..ee9df21783 --- /dev/null +++ b/test/cases/taking_pointer_of_global_tagged_union.zig @@ -0,0 +1,26 @@ +const std = @import("std"); + +const A = union(enum) { hello: usize, merp: void }; + +var global_a: A = .{ .hello = 12 }; +var global_usize: usize = 0; + +fn doSomethingWithUsize(ptr: *usize) usize { + ptr.* = ptr.* + 1; + return ptr.*; +} + +pub fn main() !void { + try std.testing.expect(doSomethingWithUsize(&global_usize) == 1); + + switch (global_a) { + .merp => return, + .hello => |*value| { + try std.testing.expect(doSomethingWithUsize(value) == 13); + }, + } +} + +// run +// backend=llvm +// target=native |
