@@ -1179,7 +1179,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
11791179 let mut inexistent_fields = vec ! [ ] ;
11801180 // Typecheck each field.
11811181 for field in fields {
1182- let span = field . span ;
1182+ let span = tcx . hir ( ) . span ( field . hir_id ) ;
11831183 let ident = tcx. adjust_ident ( field. ident , variant. def_id ) ;
11841184 let field_ty = match used_fields. entry ( ident) {
11851185 Occupied ( occupied) => {
@@ -1537,8 +1537,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
15371537 . struct_span_err ( pat. span , "pattern requires `..` due to inaccessible fields" ) ;
15381538
15391539 if let Some ( field) = fields. last ( ) {
1540+ let field_span = self . tcx . hir ( ) . span ( field. hir_id ) ;
15401541 err. span_suggestion_verbose (
1541- field . span . shrink_to_hi ( ) ,
1542+ field_span . shrink_to_hi ( ) ,
15421543 "ignore the inaccessible and unused fields" ,
15431544 ", .." . to_string ( ) ,
15441545 Applicability :: MachineApplicable ,
@@ -1606,7 +1607,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
16061607 [ .., field] => {
16071608 // Account for last field having a trailing comma or parse recovery at the tail of
16081609 // the pattern to avoid invalid suggestion (#78511).
1609- let tail = field. span . shrink_to_hi ( ) . with_hi ( pat. span . hi ( ) ) ;
1610+ let field_span = self . tcx . hir ( ) . span ( field. hir_id ) ;
1611+ let pat_span = self . tcx . hir ( ) . span ( pat. hir_id ) ;
1612+ let tail = field_span. shrink_to_hi ( ) . with_hi ( pat_span. hi ( ) ) ;
16101613 match & pat. kind {
16111614 PatKind :: Struct ( ..) => ( ", " , " }" , tail) ,
16121615 _ => return err,
0 commit comments