| ... | ... | @@ -133,3 +133,34 @@ test "@memcpy zero-bit type with aliasing" { |
| 133 | 133 | S.doTheTest(); |
| 134 | 134 | comptime S.doTheTest(); |
| 135 | 135 | } |
| 136 | |
| 137 | test "@memcpy with sentinel" { |
| 138 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 139 | |
| 140 | const S = struct { |
| 141 | fn doTheTest() void { |
| 142 | const field = @typeInfo(struct { a: u32 }).@"struct".fields[0]; |
| 143 | var buffer: [field.name.len]u8 = undefined; |
| 144 | @memcpy(&buffer, field.name); |
| 145 | } |
| 146 | }; |
| 147 | |
| 148 | S.doTheTest(); |
| 149 | comptime S.doTheTest(); |
| 150 | } |
| 151 | |
| 152 | test "@memcpy no sentinel source into sentinel destination" { |
| 153 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 154 | |
| 155 | const S = struct { |
| 156 | fn doTheTest() void { |
| 157 | const src: []const u8 = &.{ 1, 2, 3 }; |
| 158 | comptime var dest_buf: [3:0]u8 = @splat(0); |
| 159 | const dest: [:0]u8 = &dest_buf; |
| 160 | @memcpy(dest, src); |
| 161 | } |
| 162 | }; |
| 163 | |
| 164 | S.doTheTest(); |
| 165 | comptime S.doTheTest(); |
| 166 | } |