| author | |
| committer | |
| log | 4cb608e92143b00c46eb5dd479a92ab6763a6a05 |
| tree | c85693bc1bbf5e60b8eefae2bdf88ddb7d40ebac |
| parent | f26cdb2771a4bb4d5f1d5acc446ec51c3e177f75 |
2 files changed, 38 insertions(+), 0 deletions(-)
test/behavior.zig+1| ... | @@ -60,6 +60,7 @@ test { | ... | @@ -60,6 +60,7 @@ test { |
| 60 | _ = @import("behavior/nan.zig"); | 60 | _ = @import("behavior/nan.zig"); |
| 61 | _ = @import("behavior/null.zig"); | 61 | _ = @import("behavior/null.zig"); |
| 62 | _ = @import("behavior/optional.zig"); | 62 | _ = @import("behavior/optional.zig"); |
| 63 | _ = @import("behavior/overlapping_assign.zig"); | ||
| 63 | _ = @import("behavior/packed-struct.zig"); | 64 | _ = @import("behavior/packed-struct.zig"); |
| 64 | _ = @import("behavior/packed_struct_explicit_backing_int.zig"); | 65 | _ = @import("behavior/packed_struct_explicit_backing_int.zig"); |
| 65 | _ = @import("behavior/packed-union.zig"); | 66 | _ = @import("behavior/packed-union.zig"); |
test/behavior/overlapping_assign.zig created+37| ... | @@ -0,0 +1,37 @@ | ||
| 1 | const std = @import("std"); | ||
| 2 | const expectEqualSlices = std.testing.expectEqualSlices; | ||
| 3 | |||
| 4 | test "assignment to overlapping memory" { | ||
| 5 | try theTest(); | ||
| 6 | try comptime theTest(); | ||
| 7 | } | ||
| 8 | |||
| 9 | fn theTest() !void { | ||
| 10 | var a1: [3]usize = .{ 0, 1, 2 }; | ||
| 11 | a1[1..3].* = a1[0..2].*; | ||
| 12 | try expectEqualSlices(usize, &.{ 0, 0, 1 }, &a1); | ||
| 13 | |||
| 14 | var a2: [3]usize = .{ 0, 1, 2 }; | ||
| 15 | a2[0..2].* = a2[1..3].*; | ||
| 16 | try expectEqualSlices(usize, &.{ 1, 2, 2 }, &a2); | ||
| 17 | |||
| 18 | var a3: [16]u8 = .{ | ||
| 19 | 0, 1, 2, 3, 4, 5, 6, 7, | ||
| 20 | 8, 9, 10, 11, 12, 13, 14, 15, | ||
| 21 | }; | ||
| 22 | a3[1..16].* = a3[0..15].*; | ||
| 23 | try expectEqualSlices(u8, &.{ | ||
| 24 | 0, 0, 1, 2, 3, 4, 5, 6, | ||
| 25 | 7, 8, 9, 10, 11, 12, 13, 14, | ||
| 26 | }, &a3); | ||
| 27 | |||
| 28 | var a4: [16]u8 = .{ | ||
| 29 | 0, 1, 2, 3, 4, 5, 6, 7, | ||
| 30 | 8, 9, 10, 11, 12, 13, 14, 15, | ||
| 31 | }; | ||
| 32 | a4[0..15].* = a4[1..16].*; | ||
| 33 | try expectEqualSlices(u8, &.{ | ||
| 34 | 1, 2, 3, 4, 5, 6, 7, 8, | ||
| 35 | 9, 10, 11, 12, 13, 14, 15, 15, | ||
| 36 | }, &a4); | ||
| 37 | } | ||