| ... | @@ -28769,6 +28769,13 @@ fn resolvePeerTypes( | ... | @@ -28769,6 +28769,13 @@ fn resolvePeerTypes( |
| 28769 | } | 28769 | } |
| 28770 | } | 28770 | } |
| 28771 | }, | 28771 | }, |
| | 28772 | .Fn => { |
| | 28773 | if (!cand_info.mutable and cand_info.pointee_type.zigTypeTag() == .Fn and .ok == try sema.coerceInMemoryAllowedFns(block, chosen_ty, cand_info.pointee_type, target, src, src)) { |
| | 28774 | chosen = candidate; |
| | 28775 | chosen_i = candidate_i + 1; |
| | 28776 | continue; |
| | 28777 | } |
| | 28778 | }, |
| 28772 | else => {}, | 28779 | else => {}, |
| 28773 | } | 28780 | } |
| 28774 | }, | 28781 | }, |
| ... | @@ -28799,6 +28806,11 @@ fn resolvePeerTypes( | ... | @@ -28799,6 +28806,11 @@ fn resolvePeerTypes( |
| 28799 | .Vector => continue, | 28806 | .Vector => continue, |
| 28800 | else => {}, | 28807 | else => {}, |
| 28801 | }, | 28808 | }, |
| | 28809 | .Fn => if (chosen_ty.isSinglePointer() and chosen_ty.isConstPtr() and chosen_ty.childType().zigTypeTag() == .Fn) { |
| | 28810 | if (.ok == try sema.coerceInMemoryAllowedFns(block, chosen_ty.childType(), candidate_ty, target, src, src)) { |
| | 28811 | continue; |
| | 28812 | } |
| | 28813 | }, |
| 28802 | else => {}, | 28814 | else => {}, |
| 28803 | } | 28815 | } |
| 28804 | | 28816 | |