@@ -18,20 +18,19 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
1818 trait_item_def_id : DefId ,
1919 requirement : & dyn fmt:: Display ,
2020 ) -> DiagnosticBuilder < ' tcx , ErrorGuaranteed > {
21- let msg = "impl has stricter requirements than trait" ;
22- let sp = self . tcx . sess . source_map ( ) . guess_head_span ( error_span) ;
21+ let mut err = struct_span_err ! (
22+ self . tcx. sess,
23+ error_span,
24+ E0276 ,
25+ "impl has stricter requirements than trait"
26+ ) ;
2327
24- let mut err = struct_span_err ! ( self . tcx. sess, sp, E0276 , "{}" , msg) ;
25-
26- if trait_item_def_id. is_local ( ) {
28+ if let Some ( span) = self . tcx . hir ( ) . span_if_local ( trait_item_def_id) {
2729 let item_name = self . tcx . item_name ( impl_item_def_id. to_def_id ( ) ) ;
28- err. span_label (
29- self . tcx . def_span ( trait_item_def_id) ,
30- format ! ( "definition of `{}` from trait" , item_name) ,
31- ) ;
30+ err. span_label ( span, format ! ( "definition of `{}` from trait" , item_name) ) ;
3231 }
3332
34- err. span_label ( sp , format ! ( "impl has extra requirement {}" , requirement) ) ;
33+ err. span_label ( error_span , format ! ( "impl has extra requirement {}" , requirement) ) ;
3534
3635 err
3736 }
@@ -48,7 +47,6 @@ pub fn report_object_safety_error<'tcx>(
4847 hir:: Node :: Item ( item) => Some ( item. ident . span ) ,
4948 _ => None ,
5049 } ) ;
51- let span = tcx. sess . source_map ( ) . guess_head_span ( span) ;
5250 let mut err = struct_span_err ! (
5351 tcx. sess,
5452 span,
0 commit comments