| ... | @@ -869,3 +869,20 @@ test "write through pointer to optional slice arg" { | ... | @@ -869,3 +869,20 @@ test "write through pointer to optional slice arg" { |
| 869 | try S.bar(&foo); | 869 | try S.bar(&foo); |
| 870 | try expectEqualStrings(foo.?, "ok"); | 870 | try expectEqualStrings(foo.?, "ok"); |
| 871 | } | 871 | } |
| | 872 | |
| | 873 | test "modify slice length at comptime" { |
| | 874 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| | 875 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| | 876 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| | 877 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| | 878 | |
| | 879 | const arr: [2]u8 = .{ 10, 20 }; |
| | 880 | comptime var s: []const u8 = arr[0..0]; |
| | 881 | s.len += 1; |
| | 882 | const a = s; |
| | 883 | s.len += 1; |
| | 884 | const b = s; |
| | 885 | |
| | 886 | try expectEqualSlices(u8, &.{10}, a); |
| | 887 | try expectEqualSlices(u8, &.{ 10, 20 }, b); |
| | 888 | } |