@@ -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 ( ) ,
@@ -621,7 +621,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
621621 fn lower_foreign_item ( & mut self , i : & ForeignItem ) -> & ' hir hir:: ForeignItem < ' hir > {
622622 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
623623 let owner_id = hir_id. expect_owner ( ) ;
624- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
624+ let attrs =
625+ self . lower_attrs ( hir_id, & i. attrs , i. span , Target :: from_foreign_item_kind ( & i. kind ) ) ;
625626 let ( ident, kind) = match & i. kind {
626627 ForeignItemKind :: Fn ( box Fn { sig, ident, generics, define_opaque, .. } ) => {
627628 let fdec = & sig. decl ;
@@ -690,7 +691,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
690691
691692 fn lower_variant ( & mut self , item_kind : & ItemKind , v : & Variant ) -> hir:: Variant < ' hir > {
692693 let hir_id = self . lower_node_id ( v. id ) ;
693- self . lower_attrs ( hir_id, & v. attrs , v. span ) ;
694+ self . lower_attrs ( hir_id, & v. attrs , v. span , Target :: Variant ) ;
694695 hir:: Variant {
695696 hir_id,
696697 def_id : self . local_def_id ( v. id ) ,
@@ -773,7 +774,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
773774 ) -> hir:: FieldDef < ' hir > {
774775 let ty = self . lower_ty ( & f. ty , ImplTraitContext :: Disallowed ( ImplTraitPosition :: FieldTy ) ) ;
775776 let hir_id = self . lower_node_id ( f. id ) ;
776- self . lower_attrs ( hir_id, & f. attrs , f. span ) ;
777+ self . lower_attrs ( hir_id, & f. attrs , f. span , Target :: Field ) ;
777778 hir:: FieldDef {
778779 span : self . lower_span ( f. span ) ,
779780 hir_id,
@@ -792,7 +793,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
792793
793794 fn lower_trait_item ( & mut self , i : & AssocItem ) -> & ' hir hir:: TraitItem < ' hir > {
794795 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
795- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
796+ let attrs = self . lower_attrs (
797+ hir_id,
798+ & i. attrs ,
799+ i. span ,
800+ Target :: from_assoc_item_kind ( & i. kind , AssocCtxt :: Trait ) ,
801+ ) ;
796802 let trait_item_def_id = hir_id. expect_owner ( ) ;
797803
798804 let ( ident, generics, kind, has_default) = match & i. kind {
@@ -1001,7 +1007,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
10011007 let has_value = true ;
10021008 let ( defaultness, _) = self . lower_defaultness ( i. kind . defaultness ( ) , has_value) ;
10031009 let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
1004- let attrs = self . lower_attrs ( hir_id, & i. attrs , i. span ) ;
1010+ let attrs = self . lower_attrs (
1011+ hir_id,
1012+ & i. attrs ,
1013+ i. span ,
1014+ Target :: from_assoc_item_kind ( & i. kind , AssocCtxt :: Impl { of_trait : is_in_trait_impl } ) ,
1015+ ) ;
10051016
10061017 let ( ident, ( generics, kind) ) = match & i. kind {
10071018 AssocItemKind :: Const ( box ConstItem {
@@ -1171,7 +1182,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
11711182
11721183 fn lower_param ( & mut self , param : & Param ) -> hir:: Param < ' hir > {
11731184 let hir_id = self . lower_node_id ( param. id ) ;
1174- self . lower_attrs ( hir_id, & param. attrs , param. span ) ;
1185+ self . lower_attrs ( hir_id, & param. attrs , param. span , Target :: Param ) ;
11751186 hir:: Param {
11761187 hir_id,
11771188 pat : self . lower_pat ( & param. pat ) ,
@@ -1851,7 +1862,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
18511862 ) -> hir:: WherePredicate < ' hir > {
18521863 let hir_id = self . lower_node_id ( pred. id ) ;
18531864 let span = self . lower_span ( pred. span ) ;
1854- self . lower_attrs ( hir_id, & pred. attrs , span) ;
1865+ self . lower_attrs ( hir_id, & pred. attrs , span, Target :: WherePredicate ) ;
18551866 let kind = self . arena . alloc ( match & pred. kind {
18561867 WherePredicateKind :: BoundPredicate ( WhereBoundPredicate {
18571868 bound_generic_params,
0 commit comments