| ... | @@ -17738,23 +17738,17 @@ fn resolvePeerTypes( | ... | @@ -17738,23 +17738,17 @@ fn resolvePeerTypes( |
| 17738 | // If chosen is superset of candidate, keep it. | 17738 | // If chosen is superset of candidate, keep it. |
| 17739 | // If candidate is superset of chosen, switch it. | 17739 | // If candidate is superset of chosen, switch it. |
| 17740 | // If neither is a superset, merge errors. | 17740 | // If neither is a superset, merge errors. |
| 17741 | var prev_is_superset = true; | | |
| 17742 | for (candidate_ty.errorSetNames()) |name| { | 17741 | for (candidate_ty.errorSetNames()) |name| { |
| 17743 | if (!err_set_ty.?.errorSetHasField(name)) { | 17742 | if (!err_set_ty.?.errorSetHasField(name)) { |
| 17744 | prev_is_superset = false; | | |
| 17745 | break; | 17743 | break; |
| 17746 | } | 17744 | } |
| 17747 | } | 17745 | } else continue; |
| 17748 | if (prev_is_superset) continue; // use previous | | |
| 17749 | | 17746 | |
| 17750 | var cand_is_superset = true; | | |
| 17751 | for (err_set_ty.?.errorSetNames()) |name| { | 17747 | for (err_set_ty.?.errorSetNames()) |name| { |
| 17752 | if (!candidate_ty.errorSetHasField(name)) { | 17748 | if (!candidate_ty.errorSetHasField(name)) { |
| 17753 | cand_is_superset = false; | | |
| 17754 | break; | 17749 | break; |
| 17755 | } | 17750 | } |
| 17756 | } | 17751 | } else { |
| 17757 | if (cand_is_superset) { | | |
| 17758 | // Swap to candidate | 17752 | // Swap to candidate |
| 17759 | err_set_ty = candidate_ty; | 17753 | err_set_ty = candidate_ty; |
| 17760 | chosen = candidate; | 17754 | chosen = candidate; |
| ... | @@ -17801,14 +17795,11 @@ fn resolvePeerTypes( | ... | @@ -17801,14 +17795,11 @@ fn resolvePeerTypes( |
| 17801 | } | 17795 | } |
| 17802 | | 17796 | |
| 17803 | // If previous is superset, keep the previous | 17797 | // If previous is superset, keep the previous |
| 17804 | var prev_is_superset = true; | | |
| 17805 | for (candidate_ty.errorSetNames()) |name| { | 17798 | for (candidate_ty.errorSetNames()) |name| { |
| 17806 | if (!err_set_ty.?.errorSetHasField(name)) { | 17799 | if (!err_set_ty.?.errorSetHasField(name)) { |
| 17807 | prev_is_superset = false; | | |
| 17808 | break; | 17800 | break; |
| 17809 | } | 17801 | } |
| 17810 | } | 17802 | } else continue; |
| 17811 | if (prev_is_superset) continue; // use previous | | |
| 17812 | | 17803 | |
| 17813 | // Merge | 17804 | // Merge |
| 17814 | err_set_ty = try err_set_ty.?.errorSetMerge(sema.arena, candidate_ty); | 17805 | err_set_ty = try err_set_ty.?.errorSetMerge(sema.arena, candidate_ty); |
| ... | @@ -17834,14 +17825,11 @@ fn resolvePeerTypes( | ... | @@ -17834,14 +17825,11 @@ fn resolvePeerTypes( |
| 17834 | } | 17825 | } |
| 17835 | | 17826 | |
| 17836 | // If candidate is a superset of the error type, then use it. | 17827 | // If candidate is a superset of the error type, then use it. |
| 17837 | var cand_is_superset = true; | | |
| 17838 | for (err_set_ty.?.errorSetNames()) |name| { | 17828 | for (err_set_ty.?.errorSetNames()) |name| { |
| 17839 | if (!eu_set_ty.errorSetHasField(name)) { | 17829 | if (!eu_set_ty.errorSetHasField(name)) { |
| 17840 | cand_is_superset = false; | | |
| 17841 | break; | 17830 | break; |
| 17842 | } | 17831 | } |
| 17843 | } | 17832 | } else { |
| 17844 | if (cand_is_superset) { | | |
| 17845 | // Swap to candidate | 17833 | // Swap to candidate |
| 17846 | err_set_ty = eu_set_ty; | 17834 | err_set_ty = eu_set_ty; |
| 17847 | chosen = candidate; | 17835 | chosen = candidate; |
| ... | @@ -17901,23 +17889,17 @@ fn resolvePeerTypes( | ... | @@ -17901,23 +17889,17 @@ fn resolvePeerTypes( |
| 17901 | if (err_set_ty == null) err_set_ty = chosen_set_ty; | 17889 | if (err_set_ty == null) err_set_ty = chosen_set_ty; |
| 17902 | | 17890 | |
| 17903 | // If the previous error set type is a superset, we're done. | 17891 | // If the previous error set type is a superset, we're done. |
| 17904 | var prev_is_superset = true; | | |
| 17905 | for (candidate_set_ty.errorSetNames()) |name| { | 17892 | for (candidate_set_ty.errorSetNames()) |name| { |
| 17906 | if (!chosen_set_ty.errorSetHasField(name)) { | 17893 | if (!chosen_set_ty.errorSetHasField(name)) { |
| 17907 | prev_is_superset = false; | | |
| 17908 | break; | 17894 | break; |
| 17909 | } | 17895 | } |
| 17910 | } | 17896 | } else continue; |
| 17911 | if (prev_is_superset) continue; // use previous | | |
| 17912 | | 17897 | |
| 17913 | var cand_is_superset = true; | | |
| 17914 | for (chosen_set_ty.errorSetNames()) |name| { | 17898 | for (chosen_set_ty.errorSetNames()) |name| { |
| 17915 | if (!candidate_set_ty.errorSetHasField(name)) { | 17899 | if (!candidate_set_ty.errorSetHasField(name)) { |
| 17916 | cand_is_superset = false; | | |
| 17917 | break; | 17900 | break; |
| 17918 | } | 17901 | } |
| 17919 | } | 17902 | } else { |
| 17920 | if (cand_is_superset) { | | |
| 17921 | err_set_ty = candidate_ty; | 17903 | err_set_ty = candidate_ty; |
| 17922 | continue; | 17904 | continue; |
| 17923 | } | 17905 | } |