diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2021-07-28 18:23:40 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2021-07-31 19:31:29 +0300 |
| commit | b08576b2ad9dc25d166fae657c3f0331195681ec (patch) | |
| tree | 622d6af4fe7fdd208affea726f2afec9b51ad0dc /compiler/rustc_save_analysis/src | |
| parent | 337181e07d3cd33c0aec2f17c12279bc9afca88f (diff) | |
| download | rust-b08576b2ad9dc25d166fae657c3f0331195681ec.tar.gz rust-b08576b2ad9dc25d166fae657c3f0331195681ec.zip | |
rustc: Replace `HirId`s with `LocalDefId`s in `AccessLevels` tables
and passes using them - primarily privacy checking, stability checking and dead code checking. WIP
Diffstat (limited to 'compiler/rustc_save_analysis/src')
| -rw-r--r-- | compiler/rustc_save_analysis/src/dump_visitor.rs | 52 |
1 files changed, 28 insertions, 24 deletions
diff --git a/compiler/rustc_save_analysis/src/dump_visitor.rs b/compiler/rustc_save_analysis/src/dump_visitor.rs index 34302c3fb42..aea48bf3da8 100644 --- a/compiler/rustc_save_analysis/src/dump_visitor.rs +++ b/compiler/rustc_save_analysis/src/dump_visitor.rs @@ -255,16 +255,17 @@ impl<'tcx> DumpVisitor<'tcx> { &mut self, sig: &'tcx hir::FnSig<'tcx>, body: Option<hir::BodyId>, - hir_id: hir::HirId, + def_id: LocalDefId, ident: Ident, generics: &'tcx hir::Generics<'tcx>, vis: &hir::Visibility<'tcx>, span: Span, ) { - debug!("process_method: {}:{}", hir_id, ident); + debug!("process_method: {:?}:{}", def_id, ident); let map = &self.tcx.hir(); - self.nest_typeck_results(map.local_def_id(hir_id), |v| { + let hir_id = map.local_def_id_to_hir_id(def_id); + self.nest_typeck_results(def_id, |v| { if let Some(mut method_data) = v.save_ctxt.get_method_data(hir_id, ident, span) { if let Some(body) = body { v.process_formals(map.body(body).params, &method_data.qualname); @@ -275,7 +276,7 @@ impl<'tcx> DumpVisitor<'tcx> { fn_to_string(sig.decl, sig.header, Some(ident.name), generics, vis, &[], None); method_data.sig = sig::method_signature(hir_id, ident, generics, sig, &v.save_ctxt); - v.dumper.dump_def(&access_from_vis!(v.save_ctxt, vis, hir_id), method_data); + v.dumper.dump_def(&access_from_vis!(v.save_ctxt, vis, def_id), method_data); } // walk arg and return types @@ -301,7 +302,10 @@ impl<'tcx> DumpVisitor<'tcx> { ) { let field_data = self.save_ctxt.get_field_data(field, parent_id); if let Some(field_data) = field_data { - self.dumper.dump_def(&access_from!(self.save_ctxt, field, field.hir_id), field_data); + self.dumper.dump_def( + &access_from!(self.save_ctxt, field, self.tcx.hir().local_def_id(field.hir_id)), + field_data, + ); } } @@ -366,7 +370,7 @@ impl<'tcx> DumpVisitor<'tcx> { v.process_formals(body.params, &fn_data.qualname); v.process_generic_params(ty_params, &fn_data.qualname, item.hir_id()); - v.dumper.dump_def(&access_from!(v.save_ctxt, item, item.hir_id()), fn_data); + v.dumper.dump_def(&access_from!(v.save_ctxt, item, item.def_id), fn_data); } for arg in decl.inputs { @@ -390,7 +394,7 @@ impl<'tcx> DumpVisitor<'tcx> { self.nest_typeck_results(item.def_id, |v| { if let Some(var_data) = v.save_ctxt.get_item_data(item) { down_cast_data!(var_data, DefData, item.span); - v.dumper.dump_def(&access_from!(v.save_ctxt, item, item.hir_id()), var_data); + v.dumper.dump_def(&access_from!(v.save_ctxt, item, item.def_id), var_data); } v.visit_ty(&typ); v.visit_expr(expr); @@ -399,7 +403,7 @@ impl<'tcx> DumpVisitor<'tcx> { fn process_assoc_const( &mut self, - hir_id: hir::HirId, + def_id: LocalDefId, ident: Ident, typ: &'tcx hir::Ty<'tcx>, expr: Option<&'tcx hir::Expr<'tcx>>, @@ -407,15 +411,15 @@ impl<'tcx> DumpVisitor<'tcx> { vis: &hir::Visibility<'tcx>, attrs: &'tcx [ast::Attribute], ) { - let qualname = - format!("::{}", self.tcx.def_path_str(self.tcx.hir().local_def_id(hir_id).to_def_id())); + let qualname = format!("::{}", self.tcx.def_path_str(def_id.to_def_id())); if !self.span.filter_generated(ident.span) { + let hir_id = self.tcx.hir().local_def_id_to_hir_id(def_id); let sig = sig::assoc_const_signature(hir_id, ident.name, typ, expr, &self.save_ctxt); let span = self.span_from_span(ident.span); self.dumper.dump_def( - &access_from_vis!(self.save_ctxt, vis, hir_id), + &access_from_vis!(self.save_ctxt, vis, def_id), Def { kind: DefKind::Const, id: id_from_hir_id(hir_id, &self.save_ctxt), @@ -434,7 +438,7 @@ impl<'tcx> DumpVisitor<'tcx> { } // walk type and init value - self.nest_typeck_results(self.tcx.hir().local_def_id(hir_id), |v| { + self.nest_typeck_results(def_id, |v| { v.visit_ty(typ); if let Some(expr) = expr { v.visit_expr(expr); @@ -484,7 +488,7 @@ impl<'tcx> DumpVisitor<'tcx> { let span = self.span_from_span(item.ident.span); let attrs = self.tcx.hir().attrs(item.hir_id()); self.dumper.dump_def( - &access_from!(self.save_ctxt, item, item.hir_id()), + &access_from!(self.save_ctxt, item, item.def_id), Def { kind, id: id_from_def_id(item.def_id.to_def_id()), @@ -525,7 +529,7 @@ impl<'tcx> DumpVisitor<'tcx> { }; down_cast_data!(enum_data, DefData, item.span); - let access = access_from!(self.save_ctxt, item, item.hir_id()); + let access = access_from!(self.save_ctxt, item, item.def_id); for variant in enum_definition.variants { let name = variant.ident.name.to_string(); @@ -660,7 +664,7 @@ impl<'tcx> DumpVisitor<'tcx> { methods.iter().map(|i| id_from_def_id(i.id.def_id.to_def_id())).collect(); let attrs = self.tcx.hir().attrs(item.hir_id()); self.dumper.dump_def( - &access_from!(self.save_ctxt, item, item.hir_id()), + &access_from!(self.save_ctxt, item, item.def_id), Def { kind: DefKind::Trait, id, @@ -723,7 +727,7 @@ impl<'tcx> DumpVisitor<'tcx> { fn process_mod(&mut self, item: &'tcx hir::Item<'tcx>) { if let Some(mod_data) = self.save_ctxt.get_item_data(item) { down_cast_data!(mod_data, DefData, item.span); - self.dumper.dump_def(&access_from!(self.save_ctxt, item, item.hir_id()), mod_data); + self.dumper.dump_def(&access_from!(self.save_ctxt, item, item.def_id), mod_data); } } @@ -985,7 +989,7 @@ impl<'tcx> DumpVisitor<'tcx> { let respan = respan(vis_span, hir::VisibilityKind::Public); let attrs = self.tcx.hir().attrs(trait_item.hir_id()); self.process_assoc_const( - trait_item.hir_id(), + trait_item.def_id, trait_item.ident, &ty, body, @@ -1001,7 +1005,7 @@ impl<'tcx> DumpVisitor<'tcx> { self.process_method( sig, body, - trait_item.hir_id(), + trait_item.def_id, trait_item.ident, &trait_item.generics, &respan, @@ -1058,7 +1062,7 @@ impl<'tcx> DumpVisitor<'tcx> { let body = self.tcx.hir().body(body); let attrs = self.tcx.hir().attrs(impl_item.hir_id()); self.process_assoc_const( - impl_item.hir_id(), + impl_item.def_id, impl_item.ident, &ty, Some(&body.value), @@ -1071,7 +1075,7 @@ impl<'tcx> DumpVisitor<'tcx> { self.process_method( sig, Some(body), - impl_item.hir_id(), + impl_item.def_id, impl_item.ident, &impl_item.generics, &impl_item.vis, @@ -1146,7 +1150,7 @@ impl<'tcx> Visitor<'tcx> for DumpVisitor<'tcx> { hir::ItemKind::Use(path, hir::UseKind::Single) => { let sub_span = path.segments.last().unwrap().ident.span; if !self.span.filter_generated(sub_span) { - let access = access_from!(self.save_ctxt, item, item.hir_id()); + let access = access_from!(self.save_ctxt, item, item.def_id); let ref_id = self.lookup_def_id(item.hir_id()).map(id_from_def_id); let span = self.span_from_span(sub_span); let parent = @@ -1175,7 +1179,7 @@ impl<'tcx> Visitor<'tcx> for DumpVisitor<'tcx> { // we don't want to track anyway, since it's probably macro-internal `use` if let Some(sub_span) = self.span.sub_span_of_star(item.span) { if !self.span.filter_generated(item.span) { - let access = access_from!(self.save_ctxt, item, item.hir_id()); + let access = access_from!(self.save_ctxt, item, item.def_id); let span = self.span_from_span(sub_span); let parent = self.save_ctxt.tcx.parent(item.def_id.to_def_id()).map(id_from_def_id); @@ -1248,7 +1252,7 @@ impl<'tcx> Visitor<'tcx> for DumpVisitor<'tcx> { let attrs = self.tcx.hir().attrs(item.hir_id()); self.dumper.dump_def( - &access_from!(self.save_ctxt, item, item.hir_id()), + &access_from!(self.save_ctxt, item, item.def_id), Def { kind: DefKind::Type, id, @@ -1432,7 +1436,7 @@ impl<'tcx> Visitor<'tcx> for DumpVisitor<'tcx> { } fn visit_foreign_item(&mut self, item: &'tcx hir::ForeignItem<'tcx>) { - let access = access_from!(self.save_ctxt, item, item.hir_id()); + let access = access_from!(self.save_ctxt, item, item.def_id); match item.kind { hir::ForeignItemKind::Fn(decl, _, ref generics) => { |
