diff options
| author | jacobly0 <jacobly0@users.noreply.github.com> | 2022-10-12 05:40:59 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-12 12:40:59 +0300 |
| commit | 562ac8be48e4a08358da73e556e331e3618f8b4b (patch) | |
| tree | 3495e59a81924c3a8ff12b8948fe069f01f104cc /test/behavior | |
| parent | b47e54ed3f6e5d93fff8a2327c88c903cc0a194c (diff) | |
| download | zig-562ac8be48e4a08358da73e556e331e3618f8b4b.tar.gz zig-562ac8be48e4a08358da73e556e331e3618f8b4b.zip | |
codegen: add support for lowering .field_ptr on a slice
Closes #13068
Diffstat (limited to 'test/behavior')
| -rw-r--r-- | test/behavior/bugs/13068.zig | 15 | ||||
| -rw-r--r-- | test/behavior/slice.zig | 20 |
2 files changed, 31 insertions, 4 deletions
diff --git a/test/behavior/bugs/13068.zig b/test/behavior/bugs/13068.zig new file mode 100644 index 0000000000..bfc05452a4 --- /dev/null +++ b/test/behavior/bugs/13068.zig @@ -0,0 +1,15 @@ +const std = @import("std"); +const builtin = @import("builtin"); + +pub const allocator = std.heap.page_allocator; +var list = std.ArrayList(u32).init(allocator); + +test { + 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_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + + list.items.len = 0; +} diff --git a/test/behavior/slice.zig b/test/behavior/slice.zig index 5aeb6a3414..25527ed742 100644 --- a/test/behavior/slice.zig +++ b/test/behavior/slice.zig @@ -2,6 +2,7 @@ const builtin = @import("builtin"); const std = @import("std"); const expect = std.testing.expect; const expectEqualSlices = std.testing.expectEqualSlices; +const expectEqualStrings = std.testing.expectEqualStrings; const expectEqual = std.testing.expectEqual; const mem = std.mem; @@ -686,8 +687,6 @@ test "slice len modification at comptime" { } test "slice field ptr const" { - if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - const const_slice: []const u8 = "string"; const const_ptr_const_slice = &const_slice; @@ -700,8 +699,6 @@ test "slice field ptr const" { } test "slice field ptr var" { - if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO - var var_slice: []const u8 = "string"; var var_ptr_var_slice = &var_slice; @@ -712,3 +709,18 @@ test "slice field ptr var" { try expectEqual(*[]const u8, @TypeOf(&const_ptr_var_slice.*)); try expectEqual(*[*]const u8, @TypeOf(&const_ptr_var_slice.ptr)); } + +test "global slice field access" { + 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_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO + + const S = struct { + var slice: []const u8 = undefined; + }; + S.slice = "string"; + S.slice.ptr += 1; + S.slice.len -= 2; + try expectEqualStrings("trin", S.slice); +} |
