master
1export fn foo_array() void {
2 comptime {
3 var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
4 const slice = target[0..14 :255];
5 _ = slice;
6 }
7}
8export fn foo_ptr_array() void {
9 comptime {
10 var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
11 var target = &buf;
12 const slice = target[0..14 :255];
13 _ = slice;
14 }
15}
16export fn foo_vector_ConstPtrSpecialBaseArray() void {
17 comptime {
18 var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
19 var target: [*]u8 = &buf;
20 const slice = target[0..14 :255];
21 _ = slice;
22 }
23}
24export fn foo_vector_ConstPtrSpecialRef() void {
25 comptime {
26 var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
27 var target: [*]u8 = @ptrCast(&buf);
28 const slice = target[0..14 :255];
29 _ = slice;
30 }
31}
32export fn foo_cvector_ConstPtrSpecialBaseArray() void {
33 comptime {
34 var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
35 var target: [*c]u8 = &buf;
36 const slice = target[0..14 :255];
37 _ = slice;
38 }
39}
40export fn foo_cvector_ConstPtrSpecialRef() void {
41 comptime {
42 var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
43 var target: [*c]u8 = @ptrCast(&buf);
44 const slice = target[0..14 :255];
45 _ = slice;
46 }
47}
48export fn foo_slice() void {
49 comptime {
50 var buf = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ [_]u8{undefined} ** 10;
51 var target: []u8 = &buf;
52 const slice = target[0..14 :255];
53 _ = slice;
54 }
55}
56export fn undefined_slice() void {
57 const arr: [100]u16 = undefined;
58 const slice = arr[0..12 :0];
59 _ = slice;
60}
61export fn string_slice() void {
62 const str = "abcdefg";
63 const slice = str[0..1 :12];
64 _ = slice;
65}
66export fn typeName_slice() void {
67 const arr = @typeName(usize);
68 const slice = arr[0..2 :0];
69 _ = slice;
70}
71
72// error
73//
74// :4:29: error: value in memory does not match slice sentinel
75// :4:29: note: expected '255', found '0'
76// :12:29: error: value in memory does not match slice sentinel
77// :12:29: note: expected '255', found '0'
78// :20:29: error: value in memory does not match slice sentinel
79// :20:29: note: expected '255', found '0'
80// :28:29: error: value in memory does not match slice sentinel
81// :28:29: note: expected '255', found '0'
82// :36:29: error: value in memory does not match slice sentinel
83// :36:29: note: expected '255', found '0'
84// :44:29: error: value in memory does not match slice sentinel
85// :44:29: note: expected '255', found '0'
86// :52:29: error: value in memory does not match slice sentinel
87// :52:29: note: expected '255', found '0'
88// :58:22: error: value in memory does not match slice sentinel
89// :58:22: note: expected '0', found 'undefined'
90// :63:22: error: value in memory does not match slice sentinel
91// :63:22: note: expected '12', found '98'
92// :68:22: error: value in memory does not match slice sentinel
93// :68:22: note: expected '0', found '105'