@@ -18,20 +18,19 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
18
18
trait_item_def_id : DefId ,
19
19
requirement : & dyn fmt:: Display ,
20
20
) -> 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
+ ) ;
23
27
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) {
27
29
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) ) ;
32
31
}
33
32
34
- err. span_label ( sp , format ! ( "impl has extra requirement {}" , requirement) ) ;
33
+ err. span_label ( error_span , format ! ( "impl has extra requirement {}" , requirement) ) ;
35
34
36
35
err
37
36
}
@@ -48,7 +47,6 @@ pub fn report_object_safety_error<'tcx>(
48
47
hir:: Node :: Item ( item) => Some ( item. ident . span ) ,
49
48
_ => None ,
50
49
} ) ;
51
- let span = tcx. sess . source_map ( ) . guess_head_span ( span) ;
52
50
let mut err = struct_span_err ! (
53
51
tcx. sess,
54
52
span,
0 commit comments