@@ -334,6 +334,15 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
334334        self . r . field_names . insert ( def_id,  field_names) ; 
335335    } 
336336
337+     fn  insert_field_visibilities_local ( & mut  self ,  def_id :  DefId ,  vdata :  & ast:: VariantData )  { 
338+         let  field_vis = vdata
339+             . fields ( ) 
340+             . iter ( ) 
341+             . map ( |field| field. vis . span . until ( field. ident . map_or ( field. ty . span ,  |i| i. span ) ) ) 
342+             . collect ( ) ; 
343+         self . r . field_visibility_spans . insert ( def_id,  field_vis) ; 
344+     } 
345+ 
337346    fn  insert_field_names_extern ( & mut  self ,  def_id :  DefId )  { 
338347        let  field_names =
339348            self . r . cstore ( ) . struct_field_names_untracked ( def_id,  self . r . session ) . collect ( ) ; 
@@ -737,6 +746,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
737746
738747                // Record field names for error reporting. 
739748                self . insert_field_names_local ( def_id,  vdata) ; 
749+                 self . insert_field_visibilities_local ( def_id,  vdata) ; 
740750
741751                // If this is a tuple or unit struct, define a name 
742752                // in the value namespace as well. 
@@ -770,6 +780,8 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
770780                        Res :: Def ( DefKind :: Ctor ( CtorOf :: Struct ,  ctor_kind) ,  ctor_def_id. to_def_id ( ) ) ; 
771781                    self . r . define ( parent,  ident,  ValueNS ,  ( ctor_res,  ctor_vis,  sp,  expansion) ) ; 
772782                    self . r . visibilities . insert ( ctor_def_id,  ctor_vis) ; 
783+                     // We need the field visibility spans also for the constructor for E0603. 
784+                     self . insert_field_visibilities_local ( ctor_def_id. to_def_id ( ) ,  vdata) ; 
773785
774786                    self . r 
775787                        . struct_constructors 
@@ -783,6 +795,7 @@ impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> {
783795
784796                // Record field names for error reporting. 
785797                self . insert_field_names_local ( def_id,  vdata) ; 
798+                 self . insert_field_visibilities_local ( def_id,  vdata) ; 
786799            } 
787800
788801            ItemKind :: Trait ( ..)  => { 
@@ -1510,6 +1523,7 @@ impl<'a, 'b> Visitor<'b> for BuildReducedGraphVisitor<'a, 'b> {
15101523
15111524        // Record field names for error reporting. 
15121525        self . insert_field_names_local ( def_id. to_def_id ( ) ,  & variant. data ) ; 
1526+         self . insert_field_visibilities_local ( def_id. to_def_id ( ) ,  & variant. data ) ; 
15131527
15141528        visit:: walk_variant ( self ,  variant) ; 
15151529    } 
0 commit comments