@@ -8644,6 +8644,16 @@ fn zirArrayCat(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
8644
8644
const decl = try anon_decl.finish(ty, val, 0);
8645
8645
if (lhs_single_ptr or rhs_single_ptr) {
8646
8646
return sema.analyzeDeclRef(decl);
8647
+ } else if (lhs_ty.isSlice() or rhs_ty.isSlice()) {
8648
+ const slice_ty = try Type.ptr(sema.arena, target, .{
8649
+ .pointee_type = decl.ty.childType(),
8650
+ .sentinel = decl.ty.sentinel(),
8651
+ .@"addrspace" = .generic,
8652
+ .mutable = false,
8653
+ .size = .Slice,
8654
+ });
8655
+ const ptr_to_array = try sema.analyzeDeclRef(decl);
8656
+ return sema.coerceArrayPtrToSlice(block, slice_ty, ptr_to_array, .unneeded);
8647
8657
} else {
8648
8658
return sema.analyzeDeclVal(block, .unneeded, decl);
8649
8659
}
@@ -8819,6 +8829,16 @@ fn zirArrayMul(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
8819
8829
const decl = try anon_decl.finish(final_ty, val, 0);
8820
8830
if (is_single_ptr) {
8821
8831
return sema.analyzeDeclRef(decl);
8832
+ } else if (lhs_ty.isSlice()) {
8833
+ const slice_ty = try Type.ptr(sema.arena, target, .{
8834
+ .pointee_type = decl.ty.childType(),
8835
+ .sentinel = decl.ty.sentinel(),
8836
+ .@"addrspace" = .generic,
8837
+ .mutable = false,
8838
+ .size = .Slice,
8839
+ });
8840
+ const ptr_to_array = try sema.analyzeDeclRef(decl);
8841
+ return sema.coerceArrayPtrToSlice(block, slice_ty, ptr_to_array, .unneeded);
8822
8842
} else {
8823
8843
return sema.analyzeDeclVal(block, .unneeded, decl);
8824
8844
}
0 commit comments