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'