@@ -1672,40 +1672,34 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
16721672 }
16731673 } ;
16741674
1675- match terr {
1676- // Ignore msg for object safe coercion
1677- // since E0038 message will be printed
1678- TypeError :: ObjectUnsafeCoercion ( _) => { }
1679- _ => {
1680- let mut label_or_note = |span : Span , msg : & str | {
1681- if ( prefer_label && is_simple_error) || & [ span] == diag. span . primary_spans ( ) {
1682- diag. span_label ( span, msg) ;
1683- } else {
1684- diag. span_note ( span, msg) ;
1685- }
1686- } ;
1687- if let Some ( ( sp, msg) ) = secondary_span {
1688- if swap_secondary_and_primary {
1689- let terr = if let Some ( infer:: ValuePairs :: Terms ( infer:: ExpectedFound {
1690- expected,
1691- ..
1692- } ) ) = values
1693- {
1694- format ! ( "expected this to be `{}`" , expected)
1695- } else {
1696- terr. to_string ( )
1697- } ;
1698- label_or_note ( sp, & terr) ;
1699- label_or_note ( span, & msg) ;
1700- } else {
1701- label_or_note ( span, & terr. to_string ( ) ) ;
1702- label_or_note ( sp, & msg) ;
1703- }
1704- } else {
1705- label_or_note ( span, & terr. to_string ( ) ) ;
1706- }
1675+ let mut label_or_note = |span : Span , msg : & str | {
1676+ if ( prefer_label && is_simple_error) || & [ span] == diag. span . primary_spans ( ) {
1677+ diag. span_label ( span, msg) ;
1678+ } else {
1679+ diag. span_note ( span, msg) ;
17071680 }
17081681 } ;
1682+ if let Some ( ( sp, msg) ) = secondary_span {
1683+ if swap_secondary_and_primary {
1684+ let terr = if let Some ( infer:: ValuePairs :: Terms ( infer:: ExpectedFound {
1685+ expected,
1686+ ..
1687+ } ) ) = values
1688+ {
1689+ format ! ( "expected this to be `{}`" , expected)
1690+ } else {
1691+ terr. to_string ( )
1692+ } ;
1693+ label_or_note ( sp, & terr) ;
1694+ label_or_note ( span, & msg) ;
1695+ } else {
1696+ label_or_note ( span, & terr. to_string ( ) ) ;
1697+ label_or_note ( sp, & msg) ;
1698+ }
1699+ } else {
1700+ label_or_note ( span, & terr. to_string ( ) ) ;
1701+ }
1702+
17091703 if let Some ( ( expected, found) ) = expected_found {
17101704 let ( expected_label, found_label, exp_found) = match exp_found {
17111705 Mismatch :: Variable ( ef) => (
@@ -1875,9 +1869,6 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
18751869 ) ;
18761870 }
18771871 }
1878- TypeError :: ObjectUnsafeCoercion ( _) => {
1879- diag. note_unsuccessful_coercion ( found, expected) ;
1880- }
18811872 _ => {
18821873 debug ! (
18831874 "note_type_err: exp_found={:?}, expected={:?} found={:?}" ,
@@ -3122,7 +3113,6 @@ impl<'tcx> ObligationCauseExt<'tcx> for ObligationCause<'tcx> {
31223113 TypeError :: IntrinsicCast => {
31233114 Error0308 ( "cannot coerce intrinsics to function pointers" )
31243115 }
3125- TypeError :: ObjectUnsafeCoercion ( did) => Error0038 ( did) ,
31263116 _ => Error0308 ( "mismatched types" ) ,
31273117 } ,
31283118 }
0 commit comments