@@ -33284,12 +33284,16 @@ fn analyzeSlice(
33284
33284
try sema.addSafetyCheck(block, src, is_non_null, .unwrap_null);
33285
33285
}
33286
33286
33287
- if (slice_ty.isSlice(mod)) {
33288
- const slice_len_inst = try block.addTyOp(.slice_len, Type.usize, ptr_or_slice);
33289
- const actual_len = if (slice_ty.sentinel(mod) == null)
33290
- slice_len_inst
33291
- else
33292
- try sema.analyzeArithmetic(block, .add, slice_len_inst, .one, src, end_src, end_src, true);
33287
+ bounds_check: {
33288
+ const actual_len = if (array_ty.zigTypeTag(mod) == .Array)
33289
+ try mod.intRef(Type.usize, array_ty.arrayLenIncludingSentinel(mod))
33290
+ else if (slice_ty.isSlice(mod)) l: {
33291
+ const slice_len_inst = try block.addTyOp(.slice_len, Type.usize, ptr_or_slice);
33292
+ break :l if (slice_ty.sentinel(mod) == null)
33293
+ slice_len_inst
33294
+ else
33295
+ try sema.analyzeArithmetic(block, .add, slice_len_inst, .one, src, end_src, end_src, true);
33296
+ } else break :bounds_check;
33293
33297
33294
33298
const actual_end = if (slice_sentinel != null)
33295
33299
try sema.analyzeArithmetic(block, .add, end, .one, src, end_src, end_src, true)
0 commit comments