@@ -43,9 +43,10 @@ struct CheckSpirvAttrVisitor<'tcx> {
4343}
4444
4545impl CheckSpirvAttrVisitor < ' _ > {
46- fn check_spirv_attributes ( & self , hir_id : HirId , attrs : & [ Attribute ] , target : Target ) {
46+ fn check_spirv_attributes ( & self , hir_id : HirId , target : Target ) {
4747 let parse_attrs = |attrs| crate :: symbols:: parse_attrs_for_checking ( & self . sym , attrs) ;
4848
49+ let attrs = self . tcx . hir ( ) . attrs ( hir_id) ;
4950 for ( attr, parse_attr_result) in parse_attrs ( attrs) {
5051 // Make sure to mark the whole `#[spirv(...)]` attribute as used,
5152 // to avoid warnings about unused attributes.
@@ -144,48 +145,48 @@ impl<'tcx> Visitor<'tcx> for CheckSpirvAttrVisitor<'tcx> {
144145
145146 fn visit_item ( & mut self , item : & ' tcx hir:: Item < ' tcx > ) {
146147 let target = Target :: from_item ( item) ;
147- self . check_spirv_attributes ( item. hir_id ( ) , item . attrs , target) ;
148+ self . check_spirv_attributes ( item. hir_id ( ) , target) ;
148149 intravisit:: walk_item ( self , item)
149150 }
150151
151152 fn visit_generic_param ( & mut self , generic_param : & ' tcx hir:: GenericParam < ' tcx > ) {
152153 let target = Target :: from_generic_param ( generic_param) ;
153- self . check_spirv_attributes ( generic_param. hir_id , generic_param . attrs , target) ;
154+ self . check_spirv_attributes ( generic_param. hir_id , target) ;
154155 intravisit:: walk_generic_param ( self , generic_param)
155156 }
156157
157158 fn visit_trait_item ( & mut self , trait_item : & ' tcx hir:: TraitItem < ' tcx > ) {
158159 let target = Target :: from_trait_item ( trait_item) ;
159- self . check_spirv_attributes ( trait_item. hir_id ( ) , trait_item . attrs , target) ;
160+ self . check_spirv_attributes ( trait_item. hir_id ( ) , target) ;
160161 intravisit:: walk_trait_item ( self , trait_item)
161162 }
162163
163164 fn visit_struct_field ( & mut self , struct_field : & ' tcx hir:: StructField < ' tcx > ) {
164- self . check_spirv_attributes ( struct_field. hir_id , struct_field . attrs , Target :: Field ) ;
165+ self . check_spirv_attributes ( struct_field. hir_id , Target :: Field ) ;
165166 intravisit:: walk_struct_field ( self , struct_field) ;
166167 }
167168
168169 fn visit_arm ( & mut self , arm : & ' tcx hir:: Arm < ' tcx > ) {
169- self . check_spirv_attributes ( arm. hir_id , arm . attrs , Target :: Arm ) ;
170+ self . check_spirv_attributes ( arm. hir_id , Target :: Arm ) ;
170171 intravisit:: walk_arm ( self , arm) ;
171172 }
172173
173174 fn visit_foreign_item ( & mut self , f_item : & ' tcx hir:: ForeignItem < ' tcx > ) {
174175 let target = Target :: from_foreign_item ( f_item) ;
175- self . check_spirv_attributes ( f_item. hir_id ( ) , f_item . attrs , target) ;
176+ self . check_spirv_attributes ( f_item. hir_id ( ) , target) ;
176177 intravisit:: walk_foreign_item ( self , f_item)
177178 }
178179
179180 fn visit_impl_item ( & mut self , impl_item : & ' tcx hir:: ImplItem < ' tcx > ) {
180181 let target = target_from_impl_item ( self . tcx , impl_item) ;
181- self . check_spirv_attributes ( impl_item. hir_id ( ) , impl_item . attrs , target) ;
182+ self . check_spirv_attributes ( impl_item. hir_id ( ) , target) ;
182183 intravisit:: walk_impl_item ( self , impl_item)
183184 }
184185
185186 fn visit_stmt ( & mut self , stmt : & ' tcx hir:: Stmt < ' tcx > ) {
186187 // When checking statements ignore expressions, they will be checked later.
187188 if let hir:: StmtKind :: Local ( l) = stmt. kind {
188- self . check_spirv_attributes ( l. hir_id , & l . attrs , Target :: Statement ) ;
189+ self . check_spirv_attributes ( l. hir_id , Target :: Statement ) ;
189190 }
190191 intravisit:: walk_stmt ( self , stmt)
191192 }
@@ -196,7 +197,7 @@ impl<'tcx> Visitor<'tcx> for CheckSpirvAttrVisitor<'tcx> {
196197 _ => Target :: Expression ,
197198 } ;
198199
199- self . check_spirv_attributes ( expr. hir_id , & expr . attrs , target) ;
200+ self . check_spirv_attributes ( expr. hir_id , target) ;
200201 intravisit:: walk_expr ( self , expr)
201202 }
202203
@@ -206,17 +207,17 @@ impl<'tcx> Visitor<'tcx> for CheckSpirvAttrVisitor<'tcx> {
206207 generics : & ' tcx hir:: Generics < ' tcx > ,
207208 item_id : HirId ,
208209 ) {
209- self . check_spirv_attributes ( variant. id , variant . attrs , Target :: Variant ) ;
210+ self . check_spirv_attributes ( variant. id , Target :: Variant ) ;
210211 intravisit:: walk_variant ( self , variant, generics, item_id)
211212 }
212213
213214 fn visit_macro_def ( & mut self , macro_def : & ' tcx hir:: MacroDef < ' tcx > ) {
214- self . check_spirv_attributes ( macro_def. hir_id ( ) , macro_def . attrs , Target :: MacroDef ) ;
215+ self . check_spirv_attributes ( macro_def. hir_id ( ) , Target :: MacroDef ) ;
215216 intravisit:: walk_macro_def ( self , macro_def) ;
216217 }
217218
218219 fn visit_param ( & mut self , param : & ' tcx hir:: Param < ' tcx > ) {
219- self . check_spirv_attributes ( param. hir_id , param . attrs , Target :: Param ) ;
220+ self . check_spirv_attributes ( param. hir_id , Target :: Param ) ;
220221
221222 intravisit:: walk_param ( self , param) ;
222223 }
@@ -254,11 +255,7 @@ fn check_mod_attrs(tcx: TyCtxt<'_>, module_def_id: LocalDefId) {
254255 tcx. hir ( ) . krate ( ) . non_exported_macro_attrs ,
255256 ) ;
256257 if module_def_id. is_top_level_module ( ) {
257- check_spirv_attr_visitor. check_spirv_attributes (
258- CRATE_HIR_ID ,
259- tcx. hir ( ) . krate_attrs ( ) ,
260- Target :: Mod ,
261- ) ;
258+ check_spirv_attr_visitor. check_spirv_attributes ( CRATE_HIR_ID , Target :: Mod ) ;
262259 }
263260}
264261
0 commit comments