@@ -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