| ... | @@ -355,6 +355,10 @@ test "slice syntax resulting in pointer-to-array" { | ... | @@ -355,6 +355,10 @@ test "slice syntax resulting in pointer-to-array" { |
| 355 | try testSlice(); | 355 | try testSlice(); |
| 356 | try testSliceOpt(); | 356 | try testSliceOpt(); |
| 357 | try testSliceAlign(); | 357 | try testSliceAlign(); |
| | 358 | try testSliceLength(); |
| | 359 | try testSliceLengthZ(); |
| | 360 | try testArrayLength(); |
| | 361 | try testArrayLengthZ(); |
| 358 | } | 362 | } |
| 359 | | 363 | |
| 360 | fn testArray() !void { | 364 | fn testArray() !void { |
| ... | @@ -465,6 +469,40 @@ test "slice syntax resulting in pointer-to-array" { | ... | @@ -465,6 +469,40 @@ test "slice syntax resulting in pointer-to-array" { |
| 465 | try expectEqualSlices("a"[0..] ++ "b"[0..], "ab"); | 469 | try expectEqualSlices("a"[0..] ++ "b"[0..], "ab"); |
| 466 | try expectEqualSlices("a"[0.. :0] ++ "b"[0.. :0], "ab"); | 470 | try expectEqualSlices("a"[0.. :0] ++ "b"[0.. :0], "ab"); |
| 467 | } | 471 | } |
| | 472 | |
| | 473 | fn testSliceLength() !void { |
| | 474 | var array = [5]u8{ 1, 2, 3, 4, 5 }; |
| | 475 | var slice: []u8 = &array; |
| | 476 | comptime try expect(@TypeOf(slice[1..][0..2]) == *[2]u8); |
| | 477 | comptime try expect(@TypeOf(slice[1..][0..4]) == *[4]u8); |
| | 478 | comptime try expect(@TypeOf(slice[1..][0..2 :4]) == *[2:4]u8); |
| | 479 | } |
| | 480 | |
| | 481 | fn testSliceLengthZ() !void { |
| | 482 | var array = [5:0]u8{ 1, 2, 3, 4, 5 }; |
| | 483 | var slice: [:0]u8 = &array; |
| | 484 | comptime try expect(@TypeOf(slice[1..][0..2]) == *[2]u8); |
| | 485 | comptime try expect(@TypeOf(slice[1..][0..2 :4]) == *[2:4]u8); |
| | 486 | comptime try expect(@TypeOf(slice[1.. :0][0..2]) == *[2]u8); |
| | 487 | comptime try expect(@TypeOf(slice[1.. :0][0..2 :4]) == *[2:4]u8); |
| | 488 | } |
| | 489 | |
| | 490 | fn testArrayLength() !void { |
| | 491 | var array = [5]u8{ 1, 2, 3, 4, 5 }; |
| | 492 | comptime try expect(@TypeOf(array[1..][0..2]) == *[2]u8); |
| | 493 | comptime try expect(@TypeOf(array[1..][0..4]) == *[4]u8); |
| | 494 | comptime try expect(@TypeOf(array[1..][0..2 :4]) == *[2:4]u8); |
| | 495 | } |
| | 496 | |
| | 497 | fn testArrayLengthZ() !void { |
| | 498 | var array = [5:0]u8{ 1, 2, 3, 4, 5 }; |
| | 499 | comptime try expect(@TypeOf(array[1..][0..2]) == *[2]u8); |
| | 500 | comptime try expect(@TypeOf(array[1..][0..4]) == *[4:0]u8); |
| | 501 | comptime try expect(@TypeOf(array[1..][0..2 :4]) == *[2:4]u8); |
| | 502 | comptime try expect(@TypeOf(array[1.. :0][0..2]) == *[2]u8); |
| | 503 | comptime try expect(@TypeOf(array[1.. :0][0..4]) == *[4:0]u8); |
| | 504 | comptime try expect(@TypeOf(array[1.. :0][0..2 :4]) == *[2:4]u8); |
| | 505 | } |
| 468 | }; | 506 | }; |
| 469 | | 507 | |
| 470 | try S.doTheTest(); | 508 | try S.doTheTest(); |