| ... | ... | @@ -357,6 +357,14 @@ test "@memset on array pointers" { |
| 357 | 357 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 358 | 358 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 359 | 359 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| 360 | if (builtin.zig_backend == .stage2_wasm) { |
| 361 | // TODO: implement memset when element ABI size > 1 |
| 362 | return error.SkipZigTest; |
| 363 | } |
| 364 | if (builtin.zig_backend == .stage2_x86_64) { |
| 365 | // TODO: implement memset when element ABI size > 1 |
| 366 | return error.SkipZigTest; |
| 367 | } |
| 360 | 368 | |
| 361 | 369 | try testMemsetArray(); |
| 362 | 370 | try comptime testMemsetArray(); |
| ... | ... | @@ -381,6 +389,48 @@ fn testMemsetArray() !void { |
| 381 | 389 | } |
| 382 | 390 | } |
| 383 | 391 | |
| 392 | test "@memset on slices" { |
| 393 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 394 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 395 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
| 396 | if (builtin.zig_backend == .stage2_wasm) { |
| 397 | // TODO: implement memset when element ABI size > 1 |
| 398 | // TODO: implement memset on slices |
| 399 | return error.SkipZigTest; |
| 400 | } |
| 401 | if (builtin.zig_backend == .stage2_x86_64) { |
| 402 | // TODO: implement memset when element ABI size > 1 |
| 403 | // TODO: implement memset on slices |
| 404 | return error.SkipZigTest; |
| 405 | } |
| 406 | |
| 407 | try testMemsetSlice(); |
| 408 | try comptime testMemsetSlice(); |
| 409 | } |
| 410 | |
| 411 | fn testMemsetSlice() !void { |
| 412 | { |
| 413 | // memset slice to non-undefined, ABI size == 1 |
| 414 | var array: [20]u8 = undefined; |
| 415 | var len = array.len; |
| 416 | var slice = array[0..len]; |
| 417 | @memset(slice, 'A'); |
| 418 | try expect(slice[0] == 'A'); |
| 419 | try expect(slice[11] == 'A'); |
| 420 | try expect(slice[19] == 'A'); |
| 421 | } |
| 422 | { |
| 423 | // memset slice to non-undefined, ABI size > 1 |
| 424 | var array: [20]u32 = undefined; |
| 425 | var len = array.len; |
| 426 | var slice = array[0..len]; |
| 427 | @memset(slice, 1234); |
| 428 | try expect(slice[0] == 1234); |
| 429 | try expect(slice[11] == 1234); |
| 430 | try expect(slice[19] == 1234); |
| 431 | } |
| 432 | } |
| 433 | |
| 384 | 434 | test "memcpy and memset intrinsics" { |
| 385 | 435 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 386 | 436 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |