@@ -5,7 +5,7 @@ use rustc_errors::{E0570, ErrorGuaranteed, struct_span_code_err};
5
5
use rustc_hir:: attrs:: AttributeKind ;
6
6
use rustc_hir:: def:: { DefKind , PerNS , Res } ;
7
7
use 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} ;
9
9
use rustc_index:: { IndexSlice , IndexVec } ;
10
10
use rustc_middle:: span_bug;
11
11
use rustc_middle:: ty:: { ResolverAstLowering , TyCtxt } ;
@@ -80,7 +80,7 @@ impl<'a, 'hir> ItemLowerer<'a, 'hir> {
80
80
self . with_lctx ( CRATE_NODE_ID , |lctx| {
81
81
let module = lctx. lower_mod ( & c. items , & c. spans ) ;
82
82
// 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 ) ;
84
84
hir:: OwnerNode :: Crate ( module)
85
85
} )
86
86
}
@@ -136,7 +136,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
136
136
fn lower_item ( & mut self , i : & Item ) -> & ' hir hir:: Item < ' hir > {
137
137
let vis_span = self . lower_span ( i. vis . span ) ;
138
138
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 ) ) ;
140
140
let kind = self . lower_item_kind ( i. span , i. id , hir_id, attrs, vis_span, & i. kind ) ;
141
141
let item = hir:: Item {
142
142
owner_id : hir_id. expect_owner ( ) ,
@@ -649,7 +649,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
649
649
fn lower_foreign_item ( & mut self , i : & ForeignItem ) -> & ' hir hir:: ForeignItem < ' hir > {
650
650
let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
651
651
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 ) ) ;
653
654
let ( ident, kind) = match & i. kind {
654
655
ForeignItemKind :: Fn ( box Fn { sig, ident, generics, define_opaque, .. } ) => {
655
656
let fdec = & sig. decl ;
@@ -718,7 +719,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
718
719
719
720
fn lower_variant ( & mut self , item_kind : & ItemKind , v : & Variant ) -> hir:: Variant < ' hir > {
720
721
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 ) ;
722
723
hir:: Variant {
723
724
hir_id,
724
725
def_id : self . local_def_id ( v. id ) ,
@@ -801,7 +802,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
801
802
) -> hir:: FieldDef < ' hir > {
802
803
let ty = self . lower_ty ( & f. ty , ImplTraitContext :: Disallowed ( ImplTraitPosition :: FieldTy ) ) ;
803
804
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 ) ;
805
806
hir:: FieldDef {
806
807
span : self . lower_span ( f. span ) ,
807
808
hir_id,
@@ -820,7 +821,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
820
821
821
822
fn lower_trait_item ( & mut self , i : & AssocItem ) -> & ' hir hir:: TraitItem < ' hir > {
822
823
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
+ ) ;
824
830
let trait_item_def_id = hir_id. expect_owner ( ) ;
825
831
826
832
let ( ident, generics, kind, has_default) = match & i. kind {
@@ -991,7 +997,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
991
997
let has_value = true ;
992
998
let ( defaultness, _) = self . lower_defaultness ( i. kind . defaultness ( ) , has_value) ;
993
999
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
+ ) ;
995
1006
996
1007
let ( ident, ( generics, kind) ) = match & i. kind {
997
1008
AssocItemKind :: Const ( box ConstItem {
@@ -1161,7 +1172,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1161
1172
1162
1173
fn lower_param ( & mut self , param : & Param ) -> hir:: Param < ' hir > {
1163
1174
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 ) ;
1165
1176
hir:: Param {
1166
1177
hir_id,
1167
1178
pat : self . lower_pat ( & param. pat ) ,
@@ -1841,7 +1852,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1841
1852
) -> hir:: WherePredicate < ' hir > {
1842
1853
let hir_id = self . lower_node_id ( pred. id ) ;
1843
1854
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 ) ;
1845
1856
let kind = self . arena . alloc ( match & pred. kind {
1846
1857
WherePredicateKind :: BoundPredicate ( WhereBoundPredicate {
1847
1858
bound_generic_params,
0 commit comments