@@ -1123,7 +1123,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
11231123 let mut inexistent_fields = vec ! [ ] ;
11241124 // Typecheck each field.
11251125 for field in fields {
1126- let span = field . span ;
1126+ let span = tcx . hir ( ) . span ( field . hir_id ) ;
11271127 let ident = tcx. adjust_ident ( field. ident , variant. def_id ) ;
11281128 let field_ty = match used_fields. entry ( ident) {
11291129 Occupied ( occupied) => {
@@ -1412,8 +1412,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
14121412 . struct_span_err ( pat. span , "pattern requires `..` due to inaccessible fields" ) ;
14131413
14141414 if let Some ( field) = fields. last ( ) {
1415+ let field_span = self . tcx . hir ( ) . span ( field. hir_id ) ;
14151416 err. span_suggestion_verbose (
1416- field . span . shrink_to_hi ( ) ,
1417+ field_span . shrink_to_hi ( ) ,
14171418 "ignore the inaccessible and unused fields" ,
14181419 ", .." . to_string ( ) ,
14191420 Applicability :: MachineApplicable ,
@@ -1478,14 +1479,14 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
14781479 }
14791480 _ => return err,
14801481 } ,
1481- [ .., field] => (
1482- match pat. kind {
1482+ [ .., field] => {
1483+ let field_span = self . tcx . hir ( ) . span ( field. hir_id ) ;
1484+ let prefix = match pat. kind {
14831485 PatKind :: Struct ( _, [ _, ..] , _) => ", " ,
14841486 _ => "" ,
1485- } ,
1486- "" ,
1487- field. span . shrink_to_hi ( ) ,
1488- ) ,
1487+ } ;
1488+ ( prefix, "" , field_span. shrink_to_hi ( ) )
1489+ }
14891490 } ;
14901491 err. span_suggestion (
14911492 sp,
0 commit comments