1export fn foo_array() void {
2 comptime {
3 var target = [_:0]u8{ 'a', 'b', 'c', 'd' } ++ undef_10_u8;
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' } ++ undef_10_u8;
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' } ++ undef_10_u8;
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' } ++ undef_10_u8;
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' } ++ undef_10_u8;
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' } ++ undef_10_u8;
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' } ++ undef_10_u8;
51 var target: []u8 = &buf;
52 const slice = target[0..14 :255];
53 _ = slice;
54 }
55}
56const undef_10_u8: [10]u8 = @splat(undefined);
57export fn undefined_slice() void {
58 const arr: [100]u16 = undefined;
59 const slice = arr[0..12 :0];
60 _ = slice;
61}
62export fn string_slice() void {
63 const str = "abcdefg";
64 const slice = str[0..1 :12];
65 _ = slice;
66}
67export fn typeName_slice() void {
68 const arr = @typeName(usize);
69 const slice = arr[0..2 :0];
70 _ = slice;
71}
72
73// error
74//
75// :4:29: error: value in memory does not match slice sentinel
76// :4:29: note: expected '255', found '0'
77// :12:29: error: value in memory does not match slice sentinel
78// :12:29: note: expected '255', found '0'
79// :20:29: error: value in memory does not match slice sentinel
80// :20:29: note: expected '255', found '0'
81// :28:29: error: value in memory does not match slice sentinel
82// :28:29: note: expected '255', found '0'
83// :36:29: error: value in memory does not match slice sentinel
84// :36:29: note: expected '255', found '0'
85// :44:29: error: value in memory does not match slice sentinel
86// :44:29: note: expected '255', found '0'
87// :52:29: error: value in memory does not match slice sentinel
88// :52:29: note: expected '255', found '0'
89// :59:22: error: value in memory does not match slice sentinel
90// :59:22: note: expected '0', found 'undefined'
91// :64:22: error: value in memory does not match slice sentinel
92// :64:22: note: expected '12', found '98'
93// :69:22: error: value in memory does not match slice sentinel
94// :69:22: note: expected '0', found '105'