@@ -6,7 +6,7 @@ use rustc_errors::{E0570, ErrorGuaranteed, struct_span_code_err};
66use rustc_hir:: attrs:: AttributeKind ;
77use rustc_hir:: def:: { DefKind , PerNS , Res } ;
88use rustc_hir:: def_id:: { CRATE_DEF_ID , LocalDefId } ;
9- use rustc_hir:: { self as hir, HirId , LifetimeSource , PredicateOrigin , find_attr} ;
9+ use rustc_hir:: { self as hir, HirId , LifetimeSource , PredicateOrigin , Target , find_attr} ;
1010use rustc_index:: { IndexSlice , IndexVec } ;
1111use rustc_middle:: span_bug;
1212use rustc_middle:: ty:: { ResolverAstLowering , TyCtxt } ;
@@ -81,7 +81,7 @@ impl<'a, 'hir> ItemLowerer<'a, 'hir> {
8181 self . with_lctx ( CRATE_NODE_ID , |lctx| {
8282 let module = lctx. lower_mod ( & c. items , & c. spans ) ;
8383 // FIXME(jdonszelman): is dummy span ever a problem here?
84- lctx. lower_attrs ( hir:: CRATE_HIR_ID , & c. attrs , DUMMY_SP ) ;
84+ lctx. lower_attrs ( hir:: CRATE_HIR_ID , & c. attrs , DUMMY_SP , Target :: Crate ) ;
8585 hir:: OwnerNode :: Crate ( module)
8686 } )
8787 }
@@ -137,7 +137,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
137137 fn lower_item ( & mut self , i : & Item ) -> & ' hir hir:: Item < ' hir > {
138138 let vis_span = self . lower_span ( i. vis . span ) ;
139139 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
140- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
140+ let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span , Target :: from_ast_item ( i ) ) ;
141141 let kind = self . lower_item_kind ( i. span , i. id , hir_id, attrs, vis_span, & i. kind ) ;
142142 let item = hir:: Item {
143143 owner_id : hir_id. expect_owner ( ) ,
@@ -650,7 +650,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
650650 fn lower_foreign_item ( & mut self , i : & ForeignItem ) -> & ' hir hir:: ForeignItem < ' hir > {
651651 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
652652 let owner_id = hir_id. expect_owner ( ) ;
653- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
653+ let attrs =
654+ self . lower_attrs ( hir_id, & i. attrs , i. span , Target :: from_foreign_item_kind ( & i. kind ) ) ;
654655 let ( ident, kind) = match & i. kind {
655656 ForeignItemKind :: Fn ( box Fn { sig, ident, generics, define_opaque, .. } ) => {
656657 let fdec = & sig. decl ;
@@ -719,7 +720,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
719720
720721 fn lower_variant ( & mut self , item_kind : & ItemKind , v : & Variant ) -> hir:: Variant < ' hir > {
721722 let hir_id = self . lower_node_id ( v. id ) ;
722- self . lower_attrs ( hir_id, & v. attrs , v. span ) ;
723+ self . lower_attrs ( hir_id, & v. attrs , v. span , Target :: Variant ) ;
723724 hir:: Variant {
724725 hir_id,
725726 def_id : self . local_def_id ( v. id ) ,
@@ -802,7 +803,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
802803 ) -> hir:: FieldDef < ' hir > {
803804 let ty = self . lower_ty ( & f. ty , ImplTraitContext :: Disallowed ( ImplTraitPosition :: FieldTy ) ) ;
804805 let hir_id = self . lower_node_id ( f. id ) ;
805- self . lower_attrs ( hir_id, & f. attrs , f. span ) ;
806+ self . lower_attrs ( hir_id, & f. attrs , f. span , Target :: Field ) ;
806807 hir:: FieldDef {
807808 span : self . lower_span ( f. span ) ,
808809 hir_id,
@@ -821,7 +822,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
821822
822823 fn lower_trait_item ( & mut self , i : & AssocItem ) -> & ' hir hir:: TraitItem < ' hir > {
823824 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
824- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
825+ let attrs = self . lower_attrs (
826+ hir_id,
827+ & i. attrs ,
828+ i. span ,
829+ Target :: from_assoc_item_kind ( & i. kind , AssocCtxt :: Trait ) ,
830+ ) ;
825831 let trait_item_def_id = hir_id. expect_owner ( ) ;
826832
827833 let ( ident, generics, kind, has_default) = match & i. kind {
@@ -992,7 +998,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
992998 let has_value = true ;
993999 let ( defaultness, _) = self . lower_defaultness ( i. kind . defaultness ( ) , has_value) ;
9941000 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
995- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
1001+ let attrs = self . lower_attrs (
1002+ hir_id,
1003+ & i. attrs ,
1004+ i. span ,
1005+ Target :: from_assoc_item_kind ( & i. kind , AssocCtxt :: Impl { of_trait : is_in_trait_impl } ) ,
1006+ ) ;
9961007
9971008 let ( ident, ( generics, kind) ) = match & i. kind {
9981009 AssocItemKind :: Const ( box ConstItem {
@@ -1162,7 +1173,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
11621173
11631174 fn lower_param ( & mut self , param : & Param ) -> hir:: Param < ' hir > {
11641175 let hir_id = self . lower_node_id ( param. id ) ;
1165- self . lower_attrs ( hir_id, & param. attrs , param. span ) ;
1176+ self . lower_attrs ( hir_id, & param. attrs , param. span , Target :: Param ) ;
11661177 hir:: Param {
11671178 hir_id,
11681179 pat : self . lower_pat ( & param. pat ) ,
@@ -1842,7 +1853,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
18421853 ) -> hir:: WherePredicate < ' hir > {
18431854 let hir_id = self . lower_node_id ( pred. id ) ;
18441855 let span = self . lower_span ( pred. span ) ;
1845- self . lower_attrs ( hir_id, & pred. attrs , span) ;
1856+ self . lower_attrs ( hir_id, & pred. attrs , span, Target :: WherePredicate ) ;
18461857 let kind = self . arena . alloc ( match & pred. kind {
18471858 WherePredicateKind :: BoundPredicate ( WhereBoundPredicate {
18481859 bound_generic_params,
0 commit comments