@@ -9,7 +9,7 @@ use rustc_hir as hir;
99use rustc_hir:: def:: { CtorKind , CtorOf , DefKind } ;
1010use rustc_hir:: def_id:: LocalDefId ;
1111use rustc_span:: hygiene:: LocalExpnId ;
12- use rustc_span:: { Span , Symbol , kw , sym} ;
12+ use rustc_span:: { Span , Symbol , sym} ;
1313use tracing:: debug;
1414
1515use crate :: { ImplTraitContext , InvocationParent , Resolver } ;
@@ -38,7 +38,7 @@ impl<'a, 'ra, 'tcx> DefCollector<'a, 'ra, 'tcx> {
3838 fn create_def (
3939 & mut self ,
4040 node_id : NodeId ,
41- name : Symbol ,
41+ name : Option < Symbol > ,
4242 def_kind : DefKind ,
4343 span : Span ,
4444 ) -> LocalDefId {
@@ -89,7 +89,7 @@ impl<'a, 'ra, 'tcx> DefCollector<'a, 'ra, 'tcx> {
8989 self . visit_macro_invoc ( field. id ) ;
9090 } else {
9191 let name = field. ident . map_or_else ( || sym:: integer ( index ( self ) ) , |ident| ident. name ) ;
92- let def = self . create_def ( field. id , name, DefKind :: Field , field. span ) ;
92+ let def = self . create_def ( field. id , Some ( name) , DefKind :: Field , field. span ) ;
9393 self . with_parent ( def, |this| visit:: walk_field_def ( this, field) ) ;
9494 }
9595 }
@@ -161,7 +161,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
161161 return self . visit_macro_invoc ( i. id ) ;
162162 }
163163 } ;
164- let def_id = self . create_def ( i. id , i. ident . name , def_kind, i. span ) ;
164+ let def_id = self . create_def ( i. id , Some ( i. ident . name ) , def_kind, i. span ) ;
165165
166166 if let Some ( macro_data) = opt_macro_data {
167167 self . resolver . macro_map . insert ( def_id. to_def_id ( ) , macro_data) ;
@@ -175,7 +175,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
175175 if let Some ( ( ctor_kind, ctor_node_id) ) = CtorKind :: from_ast ( struct_def) {
176176 this. create_def (
177177 ctor_node_id,
178- kw :: Empty ,
178+ None ,
179179 DefKind :: Ctor ( CtorOf :: Struct , ctor_kind) ,
180180 i. span ,
181181 ) ;
@@ -211,20 +211,15 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
211211 }
212212
213213 let ( return_id, return_span) = coroutine_kind. return_id ( ) ;
214- let return_def =
215- self . create_def ( return_id, kw:: Empty , DefKind :: OpaqueTy , return_span) ;
214+ let return_def = self . create_def ( return_id, None , DefKind :: OpaqueTy , return_span) ;
216215 self . with_parent ( return_def, |this| this. visit_fn_ret_ty ( output) ) ;
217216
218217 // If this async fn has no body (i.e. it's an async fn signature in a trait)
219218 // then the closure_def will never be used, and we should avoid generating a
220219 // def-id for it.
221220 if let Some ( body) = body {
222- let closure_def = self . create_def (
223- coroutine_kind. closure_id ( ) ,
224- kw:: Empty ,
225- DefKind :: Closure ,
226- span,
227- ) ;
221+ let closure_def =
222+ self . create_def ( coroutine_kind. closure_id ( ) , None , DefKind :: Closure , span) ;
228223 self . with_parent ( closure_def, |this| this. visit_block ( body) ) ;
229224 }
230225 }
@@ -235,15 +230,15 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
235230 // Async closures desugar to closures inside of closures, so
236231 // we must create two defs.
237232 let coroutine_def =
238- self . create_def ( coroutine_kind. closure_id ( ) , kw :: Empty , DefKind :: Closure , span) ;
233+ self . create_def ( coroutine_kind. closure_id ( ) , None , DefKind :: Closure , span) ;
239234 self . with_parent ( coroutine_def, |this| this. visit_expr ( body) ) ;
240235 }
241236 _ => visit:: walk_fn ( self , fn_kind) ,
242237 }
243238 }
244239
245240 fn visit_use_tree ( & mut self , use_tree : & ' a UseTree , id : NodeId , _nested : bool ) {
246- self . create_def ( id, kw :: Empty , DefKind :: Use , use_tree. span ) ;
241+ self . create_def ( id, None , DefKind :: Use , use_tree. span ) ;
247242 visit:: walk_use_tree ( self , use_tree, id) ;
248243 }
249244
@@ -262,7 +257,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
262257 ForeignItemKind :: MacCall ( _) => return self . visit_macro_invoc ( fi. id ) ,
263258 } ;
264259
265- let def = self . create_def ( fi. id , fi. ident . name , def_kind, fi. span ) ;
260+ let def = self . create_def ( fi. id , Some ( fi. ident . name ) , def_kind, fi. span ) ;
266261
267262 self . with_parent ( def, |this| visit:: walk_item ( this, fi) ) ;
268263 }
@@ -271,12 +266,12 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
271266 if v. is_placeholder {
272267 return self . visit_macro_invoc ( v. id ) ;
273268 }
274- let def = self . create_def ( v. id , v. ident . name , DefKind :: Variant , v. span ) ;
269+ let def = self . create_def ( v. id , Some ( v. ident . name ) , DefKind :: Variant , v. span ) ;
275270 self . with_parent ( def, |this| {
276271 if let Some ( ( ctor_kind, ctor_node_id) ) = CtorKind :: from_ast ( & v. data ) {
277272 this. create_def (
278273 ctor_node_id,
279- kw :: Empty ,
274+ None ,
280275 DefKind :: Ctor ( CtorOf :: Variant , ctor_kind) ,
281276 v. span ,
282277 ) ;
@@ -312,7 +307,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
312307 GenericParamKind :: Type { .. } => DefKind :: TyParam ,
313308 GenericParamKind :: Const { .. } => DefKind :: ConstParam ,
314309 } ;
315- self . create_def ( param. id , param. ident . name , def_kind, param. ident . span ) ;
310+ self . create_def ( param. id , Some ( param. ident . name ) , def_kind, param. ident . span ) ;
316311
317312 // impl-Trait can happen inside generic parameters, like
318313 // ```
@@ -335,7 +330,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
335330 }
336331 } ;
337332
338- let def = self . create_def ( i. id , i. ident . name , def_kind, i. span ) ;
333+ let def = self . create_def ( i. id , Some ( i. ident . name ) , def_kind, i. span ) ;
339334 self . with_parent ( def, |this| visit:: walk_assoc_item ( this, i, ctxt) ) ;
340335 }
341336
@@ -347,27 +342,22 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
347342 }
348343
349344 fn visit_anon_const ( & mut self , constant : & ' a AnonConst ) {
350- let parent =
351- self . create_def ( constant. id , kw:: Empty , DefKind :: AnonConst , constant. value . span ) ;
345+ let parent = self . create_def ( constant. id , None , DefKind :: AnonConst , constant. value . span ) ;
352346 self . with_parent ( parent, |this| visit:: walk_anon_const ( this, constant) ) ;
353347 }
354348
355349 fn visit_expr ( & mut self , expr : & ' a Expr ) {
356350 let parent_def = match expr. kind {
357351 ExprKind :: MacCall ( ..) => return self . visit_macro_invoc ( expr. id ) ,
358352 ExprKind :: Closure ( ..) | ExprKind :: Gen ( ..) => {
359- self . create_def ( expr. id , kw :: Empty , DefKind :: Closure , expr. span )
353+ self . create_def ( expr. id , None , DefKind :: Closure , expr. span )
360354 }
361355 ExprKind :: ConstBlock ( ref constant) => {
362356 for attr in & expr. attrs {
363357 visit:: walk_attribute ( self , attr) ;
364358 }
365- let def = self . create_def (
366- constant. id ,
367- kw:: Empty ,
368- DefKind :: InlineConst ,
369- constant. value . span ,
370- ) ;
359+ let def =
360+ self . create_def ( constant. id , None , DefKind :: InlineConst , constant. value . span ) ;
371361 self . with_parent ( def, |this| visit:: walk_anon_const ( this, constant) ) ;
372362 return ;
373363 }
@@ -391,7 +381,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
391381 ImplTraitContext :: Existential => DefKind :: OpaqueTy ,
392382 ImplTraitContext :: InBinding => return visit:: walk_ty ( self , ty) ,
393383 } ;
394- let id = self . create_def ( * id, name, kind, ty. span ) ;
384+ let id = self . create_def ( * id, Some ( name) , kind, ty. span ) ;
395385 match self . impl_trait_context {
396386 // Do not nest APIT, as we desugar them as `impl_trait: bounds`,
397387 // so the `impl_trait` node is not a parent to `bounds`.
@@ -495,7 +485,7 @@ impl<'a, 'ra, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'ra, 'tcx> {
495485 InlineAsmOperand :: Const { anon_const } => {
496486 let def = self . create_def (
497487 anon_const. id ,
498- kw :: Empty ,
488+ None ,
499489 DefKind :: InlineConst ,
500490 anon_const. value . span ,
501491 ) ;
0 commit comments