diff --git a/src/Sema.zig b/src/Sema.zig index dd45a2db2c..fd5a25968c 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -32507,7 +32507,7 @@ fn analyzeSlice( const uncasted_end = try sema.analyzeArithmetic(block, .add, start, len, src, start_src, end_src, false); break :end try sema.coerce(block, Type.usize, uncasted_end, end_src); } else try sema.coerce(block, Type.usize, uncasted_end_opt, end_src); - if (try sema.resolveValue(end)) |end_val| { + if (try sema.resolveDefinedValue(block, end_src, end)) |end_val| { const len_s_val = try mod.intValue( Type.usize, array_ty.arrayLenIncludingSentinel(mod), diff --git a/test/cases/compile_errors/slice_end_index_undefined.zig b/test/cases/compile_errors/slice_end_index_undefined.zig new file mode 100644 index 0000000000..151c156f18 --- /dev/null +++ b/test/cases/compile_errors/slice_end_index_undefined.zig @@ -0,0 +1,10 @@ +export fn a() void { + var array: [0]void = undefined; + _ = array[0..undefined]; +} + +// error +// backend=stage2 +// target=native +// +// :3:18: error: use of undefined value here causes undefined behavior