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