@@ -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 ( ) ,
@@ -621,7 +621,8 @@ impl<'hir> LoweringContext<'_, 'hir> {
621
621
fn lower_foreign_item ( & mut self , i : & ForeignItem ) -> & ' hir hir:: ForeignItem < ' hir > {
622
622
let hir_id = hir:: HirId :: make_owner ( self . current_hir_id_owner . def_id ) ;
623
623
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 ) ) ;
625
626
let ( ident, kind) = match & i. kind {
626
627
ForeignItemKind :: Fn ( box Fn { sig, ident, generics, define_opaque, .. } ) => {
627
628
let fdec = & sig. decl ;
@@ -690,7 +691,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
690
691
691
692
fn lower_variant ( & mut self , item_kind : & ItemKind , v : & Variant ) -> hir:: Variant < ' hir > {
692
693
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 ) ;
694
695
hir:: Variant {
695
696
hir_id,
696
697
def_id : self . local_def_id ( v. id ) ,
@@ -773,7 +774,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
773
774
) -> hir:: FieldDef < ' hir > {
774
775
let ty = self . lower_ty ( & f. ty , ImplTraitContext :: Disallowed ( ImplTraitPosition :: FieldTy ) ) ;
775
776
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 ) ;
777
778
hir:: FieldDef {
778
779
span : self . lower_span ( f. span ) ,
779
780
hir_id,
@@ -792,7 +793,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
792
793
793
794
fn lower_trait_item ( & mut self , i : & AssocItem ) -> & ' hir hir:: TraitItem < ' hir > {
794
795
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
+ ) ;
796
802
let trait_item_def_id = hir_id. expect_owner ( ) ;
797
803
798
804
let ( ident, generics, kind, has_default) = match & i. kind {
@@ -1001,7 +1007,12 @@ impl<'hir> LoweringContext<'_, 'hir> {
1001
1007
let has_value = true ;
1002
1008
let ( defaultness, _) = self . lower_defaultness ( i. kind . defaultness ( ) , has_value) ;
1003
1009
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
+ ) ;
1005
1016
1006
1017
let ( ident, ( generics, kind) ) = match & i. kind {
1007
1018
AssocItemKind :: Const ( box ConstItem {
@@ -1171,7 +1182,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1171
1182
1172
1183
fn lower_param ( & mut self , param : & Param ) -> hir:: Param < ' hir > {
1173
1184
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 ) ;
1175
1186
hir:: Param {
1176
1187
hir_id,
1177
1188
pat : self . lower_pat ( & param. pat ) ,
@@ -1851,7 +1862,7 @@ impl<'hir> LoweringContext<'_, 'hir> {
1851
1862
) -> hir:: WherePredicate < ' hir > {
1852
1863
let hir_id = self . lower_node_id ( pred. id ) ;
1853
1864
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 ) ;
1855
1866
let kind = self . arena . alloc ( match & pred. kind {
1856
1867
WherePredicateKind :: BoundPredicate ( WhereBoundPredicate {
1857
1868
bound_generic_params,
0 commit comments