diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-07-16 16:32:49 +0300 |
|---|---|---|
| committer | Veikka Tuominen <git@vexu.eu> | 2022-07-23 15:40:11 +0300 |
| commit | ff7ec4efb5a6da565b92bc7b129d03680a4a72bd (patch) | |
| tree | 14006dc9e492015837a97328ccb85ac77f3e27e3 /test/behavior/union.zig | |
| parent | 55fe34100f8b516480cf530eb58d00ea8b665765 (diff) | |
| download | zig-ff7ec4efb5a6da565b92bc7b129d03680a4a72bd.tar.gz zig-ff7ec4efb5a6da565b92bc7b129d03680a4a72bd.zip | |
Sema: bad union field access safety
Diffstat (limited to 'test/behavior/union.zig')
| -rw-r--r-- | test/behavior/union.zig | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/test/behavior/union.zig b/test/behavior/union.zig index 1787a9f30e..8e4b262565 100644 --- a/test/behavior/union.zig +++ b/test/behavior/union.zig @@ -37,6 +37,7 @@ test "init union with runtime value - floats" { test "basic unions" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO var foo = Foo{ .int = 1 }; try expect(foo.int == 1); @@ -430,9 +431,11 @@ const Foo1 = union(enum) { var glbl: Foo1 = undefined; test "global union with single field is correctly initialized" { + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO glbl = Foo1{ .f = @typeInfo(Foo1).Union.fields[0].field_type{ .x = 123 }, @@ -473,8 +476,11 @@ test "update the tag value for zero-sized unions" { } test "union initializer generates padding only if needed" { + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO const U = union(enum) { A: u24, @@ -747,9 +753,11 @@ fn Setter(attr: Attribute) type { } test "return union init with void payload" { + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO const S = struct { fn entry() !void { @@ -775,6 +783,7 @@ test "@unionInit stored to a const" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO const S = struct { const U = union(enum) { @@ -937,6 +946,7 @@ test "cast from anonymous struct to union" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO const S = struct { const U = union(enum) { @@ -969,6 +979,7 @@ test "cast from pointer to anonymous struct to pointer to union" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO const S = struct { const U = union(enum) { @@ -1104,6 +1115,8 @@ test "union enum type gets a separate scope" { test "global variable struct contains union initialized to non-most-aligned field" { if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO const T = struct { const U = union(enum) { |
