@@ -5,7 +5,7 @@ use rustc_errors::{E0570, ErrorGuaranteed, struct_span_code_err};
55use rustc_hir:: attrs:: AttributeKind ;
66use rustc_hir:: def:: { DefKind , PerNS , Res } ;
77use rustc_hir:: def_id:: { CRATE_DEF_ID , LocalDefId } ;
8- use rustc_hir:: { self as hir, HirId , LifetimeSource , PredicateOrigin , find_attr} ;
8+ use rustc_hir:: { self as hir, HirId , LifetimeSource , PredicateOrigin , Target , find_attr} ;
99use rustc_index:: { IndexSlice , IndexVec } ;
1010use rustc_middle:: span_bug;
1111use rustc_middle:: ty:: { ResolverAstLowering , TyCtxt } ;
@@ -80,7 +80,7 @@ impl<'a, 'hir> ItemLowerer<'a, 'hir> {
8080 self . with_lctx ( CRATE_NODE_ID , |lctx| {
8181 let module = lctx. lower_mod ( & c. items , & c. spans ) ;
8282 // FIXME(jdonszelman): is dummy span ever a problem here?
83- lctx. lower_attrs ( hir:: CRATE_HIR_ID , & c. attrs , DUMMY_SP ) ;
83+ lctx. lower_attrs ( hir:: CRATE_HIR_ID , & c. attrs , DUMMY_SP , Target :: Crate ) ;
8484 hir:: OwnerNode :: Crate ( module)
8585 } )
8686 }
@@ -136,7 +136,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
136136 fn lower_item ( & mut self , i : & Item ) -> & ' hir hir:: Item < ' hir > {
137137 let vis_span = self . lower_span ( i. vis . span ) ;
138138 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
139- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
139+ let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span , Target :: from_ast_item ( i ) ) ;
140140 let kind = self . lower_item_kind ( i. span , i. id , hir_id, attrs, vis_span, & i. kind ) ;
141141 let item = hir:: Item {
142142 owner_id : hir_id. expect_owner ( ) ,
@@ -649,7 +649,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
649649 fn lower_foreign_item ( & mut self , i : & ForeignItem ) -> & ' hir hir:: ForeignItem < ' hir > {
650650 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
651651 let owner_id = hir_id. expect_owner ( ) ;
652- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
652+ let attrs =
653+ self . lower_attrs ( hir_id, & i. attrs , i. span , Target :: from_foreign_item_kind ( & i. kind ) ) ;
653654 let ( ident, kind) = match & i. kind {
654655 ForeignItemKind :: Fn ( box Fn { sig, ident, generics, define_opaque, .. } ) => {
655656 let fdec = & sig. decl ;
@@ -718,7 +719,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
718719
719720 fn lower_variant ( & mut self , item_kind : & ItemKind , v : & Variant ) -> hir:: Variant < ' hir > {
720721 let hir_id = self . lower_node_id ( v. id ) ;
721- self . lower_attrs ( hir_id, & v. attrs , v. span ) ;
722+ self . lower_attrs ( hir_id, & v. attrs , v. span , Target :: Variant ) ;
722723 hir:: Variant {
723724 hir_id,
724725 def_id : self . local_def_id ( v. id ) ,
@@ -801,7 +802,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
801802 ) -> hir:: FieldDef < ' hir > {
802803 let ty = self . lower_ty ( & f. ty , ImplTraitContext :: Disallowed ( ImplTraitPosition :: FieldTy ) ) ;
803804 let hir_id = self . lower_node_id ( f. id ) ;
804- self . lower_attrs ( hir_id, & f. attrs , f. span ) ;
805+ self . lower_attrs ( hir_id, & f. attrs , f. span , Target :: Field ) ;
805806 hir:: FieldDef {
806807 span : self . lower_span ( f. span ) ,
807808 hir_id,
@@ -820,7 +821,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
820821
821822 fn lower_trait_item ( & mut self , i : & AssocItem ) -> & ' hir hir:: TraitItem < ' hir > {
822823 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
823- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
824+ let attrs = self . lower_attrs (
825+ hir_id,
826+ & i. attrs ,
827+ i. span ,
828+ Target :: from_assoc_item_kind ( & i. kind , AssocCtxt :: Trait ) ,
829+ ) ;
824830 let trait_item_def_id = hir_id. expect_owner ( ) ;
825831
826832 let ( ident, generics, kind, has_default) = match & i. kind {
@@ -991,7 +997,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
991997 let has_value = true ;
992998 let ( defaultness, _) = self . lower_defaultness ( i. kind . defaultness ( ) , has_value) ;
993999 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
994- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
1000+ let attrs = self . lower_attrs (
1001+ hir_id,
1002+ & i. attrs ,
1003+ i. span ,
1004+ Target :: from_assoc_item_kind ( & i. kind , AssocCtxt :: Impl { of_trait : is_in_trait_impl } ) ,
1005+ ) ;
9951006
9961007 let ( ident, ( generics, kind) ) = match & i. kind {
9971008 AssocItemKind :: Const ( box ConstItem {
@@ -1161,7 +1172,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
11611172
11621173 fn lower_param ( & mut self , param : & Param ) -> hir:: Param < ' hir > {
11631174 let hir_id = self . lower_node_id ( param. id ) ;
1164- self . lower_attrs ( hir_id, & param. attrs , param. span ) ;
1175+ self . lower_attrs ( hir_id, & param. attrs , param. span , Target :: Param ) ;
11651176 hir:: Param {
11661177 hir_id,
11671178 pat : self . lower_pat ( & param. pat ) ,
@@ -1841,7 +1852,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
18411852 ) -> hir:: WherePredicate < ' hir > {
18421853 let hir_id = self . lower_node_id ( pred. id ) ;
18431854 let span = self . lower_span ( pred. span ) ;
1844- self . lower_attrs ( hir_id, & pred. attrs , span) ;
1855+ self . lower_attrs ( hir_id, & pred. attrs , span, Target :: WherePredicate ) ;
18451856 let kind = self . arena . alloc ( match & pred. kind {
18461857 WherePredicateKind :: BoundPredicate ( WhereBoundPredicate {
18471858 bound_generic_params,
0 commit comments