@@ -1672,40 +1672,34 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
1672
1672
}
1673
1673
} ;
1674
1674
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) ;
1707
1680
}
1708
1681
} ;
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
+
1709
1703
if let Some ( ( expected, found) ) = expected_found {
1710
1704
let ( expected_label, found_label, exp_found) = match exp_found {
1711
1705
Mismatch :: Variable ( ef) => (
@@ -1875,9 +1869,6 @@ impl<'tcx> TypeErrCtxt<'_, 'tcx> {
1875
1869
) ;
1876
1870
}
1877
1871
}
1878
- TypeError :: ObjectUnsafeCoercion ( _) => {
1879
- diag. note_unsuccessful_coercion ( found, expected) ;
1880
- }
1881
1872
_ => {
1882
1873
debug ! (
1883
1874
"note_type_err: exp_found={:?}, expected={:?} found={:?}" ,
@@ -3122,7 +3113,6 @@ impl<'tcx> ObligationCauseExt<'tcx> for ObligationCause<'tcx> {
3122
3113
TypeError :: IntrinsicCast => {
3123
3114
Error0308 ( "cannot coerce intrinsics to function pointers" )
3124
3115
}
3125
- TypeError :: ObjectUnsafeCoercion ( did) => Error0038 ( did) ,
3126
3116
_ => Error0308 ( "mismatched types" ) ,
3127
3117
} ,
3128
3118
}
0 commit comments