aboutsummaryrefslogtreecommitdiff
path: root/test/behavior
diff options
context:
space:
mode:
authorjacobly0 <jacobly0@users.noreply.github.com>2022-10-12 05:40:59 -0400
committerGitHub <noreply@github.com>2022-10-12 12:40:59 +0300
commit562ac8be48e4a08358da73e556e331e3618f8b4b (patch)
tree3495e59a81924c3a8ff12b8948fe069f01f104cc /test/behavior
parentb47e54ed3f6e5d93fff8a2327c88c903cc0a194c (diff)
downloadzig-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.zig15
-rw-r--r--test/behavior/slice.zig20
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);
+}