| ... | ... | @@ -13587,14 +13587,14 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai |
| 13587 | 13587 | const lhs_sub_val = if (lhs_ty.isSinglePointer(zcu)) |
| 13588 | 13588 | try sema.pointerDeref(block, lhs_src, lhs_val, lhs_ty) orelse break :rs lhs_src |
| 13589 | 13589 | else if (lhs_ty.isSlice(zcu)) |
| 13590 | | try sema.maybeDerefSliceAsArray(block, lhs_src, lhs_val, lhs_ty) orelse break :rs lhs_src |
| 13590 | try sema.maybeDerefSliceAsArray(block, lhs_src, lhs_val) orelse break :rs lhs_src |
| 13591 | 13591 | else |
| 13592 | 13592 | lhs_val; |
| 13593 | 13593 | |
| 13594 | 13594 | const rhs_sub_val = if (rhs_ty.isSinglePointer(zcu)) |
| 13595 | 13595 | try sema.pointerDeref(block, rhs_src, rhs_val, rhs_ty) orelse break :rs rhs_src |
| 13596 | 13596 | else if (rhs_ty.isSlice(zcu)) |
| 13597 | | try sema.maybeDerefSliceAsArray(block, rhs_src, rhs_val, rhs_ty) orelse break :rs rhs_src |
| 13597 | try sema.maybeDerefSliceAsArray(block, rhs_src, rhs_val) orelse break :rs rhs_src |
| 13598 | 13598 | else |
| 13599 | 13599 | rhs_val; |
| 13600 | 13600 | |
| ... | ... | @@ -31049,7 +31049,7 @@ fn analyzeLoad( |
| 31049 | 31049 | |
| 31050 | 31050 | if (try sema.resolveDefinedValue(block, ptr_src, ptr)) |ptr_val| { |
| 31051 | 31051 | if (switch (ptr_ty.ptrSize(zcu)) { |
| 31052 | | .slice => try sema.maybeDerefSliceAsArray(block, src, ptr_val, ptr_ty), |
| 31052 | .slice => try sema.maybeDerefSliceAsArray(block, src, ptr_val), |
| 31053 | 31053 | else => try sema.pointerDeref(block, src, ptr_val, ptr_ty), |
| 31054 | 31054 | }) |elem_val| { |
| 31055 | 31055 | return .fromValue(elem_val); |
| ... | ... | @@ -34669,7 +34669,7 @@ fn anyUndef(sema: *Sema, block: *Block, src: LazySrcLoc, val: Value) !bool { |
| 34669 | 34669 | .slice => { |
| 34670 | 34670 | // If the slice contents are runtime-known, reification will fail later on with a |
| 34671 | 34671 | // specific error message. |
| 34672 | | const arr = try sema.maybeDerefSliceAsArray(block, src, val, val.typeOf(zcu)) orelse return false; |
| 34672 | const arr = try sema.maybeDerefSliceAsArray(block, src, val) orelse return false; |
| 34673 | 34673 | return sema.anyUndef(block, src, arr); |
| 34674 | 34674 | }, |
| 34675 | 34675 | .aggregate => |aggregate| for (0..aggregate.storage.values().len) |i| { |
| ... | ... | @@ -34710,7 +34710,7 @@ fn derefSliceAsArray( |
| 34710 | 34710 | /// being comptime-resolved is that the block is being comptime-evaluated. |
| 34711 | 34711 | reason: ?ComptimeReason, |
| 34712 | 34712 | ) CompileError!Value { |
| 34713 | | return try sema.maybeDerefSliceAsArray(block, src, slice_val, slice_val.typeOf(sema.pt.zcu)) orelse { |
| 34713 | return try sema.maybeDerefSliceAsArray(block, src, slice_val) orelse { |
| 34714 | 34714 | return sema.failWithNeededComptime(block, src, reason); |
| 34715 | 34715 | }; |
| 34716 | 34716 | } |
| ... | ... | @@ -34723,10 +34723,11 @@ fn maybeDerefSliceAsArray( |
| 34723 | 34723 | block: *Block, |
| 34724 | 34724 | src: LazySrcLoc, |
| 34725 | 34725 | slice_val: Value, |
| 34726 | | slice_ty: Type, |
| 34727 | 34726 | ) CompileError!?Value { |
| 34728 | 34727 | const pt = sema.pt; |
| 34729 | 34728 | const zcu = pt.zcu; |
| 34729 | const slice_ty = slice_val.typeOf(zcu); |
| 34730 | assert(slice_ty.zigTypeTag(zcu) == .pointer); |
| 34730 | 34731 | switch (slice_ty.ptrInfo(zcu).flags.size) { |
| 34731 | 34732 | .slice => {}, |
| 34732 | 34733 | .one => return sema.pointerDeref(block, src, slice_val, slice_ty), |