fn process_struct_field_def(
&mut self,
- field: &'tcx hir::StructField<'tcx>,
+ field: &'tcx hir::FieldDef<'tcx>,
parent_id: hir::HirId,
) {
let field_data = self.save_ctxt.get_field_data(field, parent_id);
body: hir::BodyId,
) {
let map = &self.tcx.hir();
- self.nest_typeck_results(map.local_def_id(item.hir_id), |v| {
+ self.nest_typeck_results(item.def_id, |v| {
let body = map.body(body);
if let Some(fn_data) = v.save_ctxt.get_item_data(item) {
down_cast_data!(fn_data, DefData, item.span);
v.process_formals(body.params, &fn_data.qualname);
- v.process_generic_params(ty_params, &fn_data.qualname, item.hir_id);
+ 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.hir_id()), fn_data);
}
for arg in decl.inputs {
typ: &'tcx hir::Ty<'tcx>,
expr: &'tcx hir::Expr<'tcx>,
) {
- self.nest_typeck_results(self.tcx.hir().local_def_id(item.hir_id), |v| {
+ 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.hir_id()), var_data);
}
v.visit_ty(&typ);
v.visit_expr(expr);
) {
debug!("process_struct {:?} {:?}", item, item.span);
let name = item.ident.to_string();
- let qualname = format!(
- "::{}",
- self.tcx.def_path_str(self.tcx.hir().local_def_id(item.hir_id).to_def_id())
- );
+ let qualname = format!("::{}", self.tcx.def_path_str(item.def_id.to_def_id()));
let kind = match item.kind {
hir::ItemKind::Struct(_, _) => DefKind::Struct,
if !self.span.filter_generated(item.ident.span) {
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.hir_id()),
Def {
kind,
- id: id_from_hir_id(item.hir_id, &self.save_ctxt),
+ id: id_from_def_id(item.def_id.to_def_id()),
span,
name,
qualname: qualname.clone(),
parent: None,
children: fields,
decl_id: None,
- docs: self.save_ctxt.docs_for_attrs(&item.attrs),
+ docs: self.save_ctxt.docs_for_attrs(attrs),
sig: sig::item_signature(item, &self.save_ctxt),
- attributes: lower_attributes(item.attrs.to_vec(), &self.save_ctxt),
+ attributes: lower_attributes(attrs.to_vec(), &self.save_ctxt),
},
);
}
- self.nest_typeck_results(self.tcx.hir().local_def_id(item.hir_id), |v| {
+ self.nest_typeck_results(item.def_id, |v| {
for field in def.fields() {
- v.process_struct_field_def(field, item.hir_id);
+ v.process_struct_field_def(field, item.hir_id());
v.visit_ty(&field.ty);
}
- v.process_generic_params(ty_params, &qualname, item.hir_id);
+ v.process_generic_params(ty_params, &qualname, item.hir_id());
});
}
};
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.hir_id());
for variant in enum_definition.variants {
let name = variant.ident.name.to_string();
if !self.span.filter_generated(name_span) {
let span = self.span_from_span(name_span);
let id = id_from_hir_id(variant.id, &self.save_ctxt);
- let parent = Some(id_from_hir_id(item.hir_id, &self.save_ctxt));
+ let parent = Some(id_from_def_id(item.def_id.to_def_id()));
+ let attrs = self.tcx.hir().attrs(variant.id);
self.dumper.dump_def(
&access,
parent,
children: vec![],
decl_id: None,
- docs: self.save_ctxt.docs_for_attrs(&variant.attrs),
+ docs: self.save_ctxt.docs_for_attrs(attrs),
sig: sig::variant_signature(variant, &self.save_ctxt),
- attributes: lower_attributes(
- variant.attrs.to_vec(),
- &self.save_ctxt,
- ),
+ attributes: lower_attributes(attrs.to_vec(), &self.save_ctxt),
},
);
}
if !self.span.filter_generated(name_span) {
let span = self.span_from_span(name_span);
let id = id_from_hir_id(variant.id, &self.save_ctxt);
- let parent = Some(id_from_hir_id(item.hir_id, &self.save_ctxt));
+ let parent = Some(id_from_def_id(item.def_id.to_def_id()));
+ let attrs = self.tcx.hir().attrs(variant.id);
self.dumper.dump_def(
&access,
parent,
children: vec![],
decl_id: None,
- docs: self.save_ctxt.docs_for_attrs(&variant.attrs),
+ docs: self.save_ctxt.docs_for_attrs(attrs),
sig: sig::variant_signature(variant, &self.save_ctxt),
- attributes: lower_attributes(
- variant.attrs.to_vec(),
- &self.save_ctxt,
- ),
+ attributes: lower_attributes(attrs.to_vec(), &self.save_ctxt),
},
);
}
self.visit_ty(field.ty);
}
}
- self.process_generic_params(ty_params, &enum_data.qualname, item.hir_id);
+ self.process_generic_params(ty_params, &enum_data.qualname, item.hir_id());
self.dumper.dump_def(&access, enum_data);
}
}
let map = &self.tcx.hir();
- self.nest_typeck_results(map.local_def_id(item.hir_id), |v| {
+ self.nest_typeck_results(item.def_id, |v| {
v.visit_ty(&impl_.self_ty);
if let Some(trait_ref) = &impl_.of_trait {
v.process_path(trait_ref.hir_ref_id, &hir::QPath::Resolved(None, &trait_ref.path));
}
- v.process_generic_params(&impl_.generics, "", item.hir_id);
+ v.process_generic_params(&impl_.generics, "", item.hir_id());
for impl_item in impl_.items {
- v.process_impl_item(
- map.impl_item(impl_item.id),
- map.local_def_id(item.hir_id).to_def_id(),
- );
+ v.process_impl_item(map.impl_item(impl_item.id), item.def_id.to_def_id());
}
});
}
methods: &'tcx [hir::TraitItemRef],
) {
let name = item.ident.to_string();
- let qualname = format!(
- "::{}",
- self.tcx.def_path_str(self.tcx.hir().local_def_id(item.hir_id).to_def_id())
- );
+ let qualname = format!("::{}", self.tcx.def_path_str(item.def_id.to_def_id()));
let mut val = name.clone();
if !generics.params.is_empty() {
val.push_str(&generic_params_to_string(generics.params));
val.push_str(&bounds_to_string(trait_refs));
}
if !self.span.filter_generated(item.ident.span) {
- let id = id_from_hir_id(item.hir_id, &self.save_ctxt);
+ let id = id_from_def_id(item.def_id.to_def_id());
let span = self.span_from_span(item.ident.span);
let children =
- methods.iter().map(|i| id_from_hir_id(i.id.hir_id, &self.save_ctxt)).collect();
+ 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.hir_id()),
Def {
kind: DefKind::Trait,
id,
parent: None,
children,
decl_id: None,
- docs: self.save_ctxt.docs_for_attrs(&item.attrs),
+ docs: self.save_ctxt.docs_for_attrs(attrs),
sig: sig::item_signature(item, &self.save_ctxt),
- attributes: lower_attributes(item.attrs.to_vec(), &self.save_ctxt),
+ attributes: lower_attributes(attrs.to_vec(), &self.save_ctxt),
},
);
}
kind: RelationKind::SuperTrait,
span,
from: id_from_def_id(id),
- to: id_from_hir_id(item.hir_id, &self.save_ctxt),
+ to: id_from_def_id(item.def_id.to_def_id()),
});
}
}
}
// walk generics and methods
- self.process_generic_params(generics, &qualname, item.hir_id);
+ self.process_generic_params(generics, &qualname, item.hir_id());
for method in methods {
let map = &self.tcx.hir();
- self.process_trait_item(
- map.trait_item(method.id),
- map.local_def_id(item.hir_id).to_def_id(),
- )
+ self.process_trait_item(map.trait_item(method.id), item.def_id.to_def_id())
}
}
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.hir_id()), mod_data);
}
}
&mut self,
ex: &'tcx hir::Expr<'tcx>,
path: &'tcx hir::QPath<'tcx>,
- fields: &'tcx [hir::Field<'tcx>],
+ fields: &'tcx [hir::ExprField<'tcx>],
variant: &'tcx ty::VariantDef,
rest: Option<&'tcx hir::Expr<'tcx>>,
) {
hir::TraitItemKind::Const(ref ty, body) => {
let body = body.map(|b| &self.tcx.hir().body(b).value);
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.hir_id(),
trait_item.ident,
&ty,
body,
trait_id,
&respan,
- &trait_item.attrs,
+ attrs,
);
}
hir::TraitItemKind::Fn(ref sig, ref trait_fn) => {
self.process_method(
sig,
body,
- trait_item.hir_id,
+ trait_item.hir_id(),
trait_item.ident,
&trait_item.generics,
&respan,
hir::TraitItemKind::Type(ref bounds, ref default_ty) => {
// FIXME do something with _bounds (for type refs)
let name = trait_item.ident.name.to_string();
- let qualname = format!(
- "::{}",
- self.tcx
- .def_path_str(self.tcx.hir().local_def_id(trait_item.hir_id).to_def_id())
- );
+ let qualname =
+ format!("::{}", self.tcx.def_path_str(trait_item.def_id.to_def_id()));
if !self.span.filter_generated(trait_item.ident.span) {
let span = self.span_from_span(trait_item.ident.span);
- let id = id_from_hir_id(trait_item.hir_id, &self.save_ctxt);
+ let id = id_from_def_id(trait_item.def_id.to_def_id());
+ let attrs = self.tcx.hir().attrs(trait_item.hir_id());
self.dumper.dump_def(
&Access { public: true, reachable: true },
parent: Some(id_from_def_id(trait_id)),
children: vec![],
decl_id: None,
- docs: self.save_ctxt.docs_for_attrs(&trait_item.attrs),
+ docs: self.save_ctxt.docs_for_attrs(attrs),
sig: sig::assoc_type_signature(
- trait_item.hir_id,
+ trait_item.hir_id(),
trait_item.ident,
Some(bounds),
default_ty.as_ref().map(|ty| &**ty),
&self.save_ctxt,
),
- attributes: lower_attributes(
- trait_item.attrs.to_vec(),
- &self.save_ctxt,
- ),
+ attributes: lower_attributes(attrs.to_vec(), &self.save_ctxt),
},
);
}
match impl_item.kind {
hir::ImplItemKind::Const(ref ty, body) => {
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.hir_id(),
impl_item.ident,
&ty,
Some(&body.value),
impl_id,
&impl_item.vis,
- &impl_item.attrs,
+ attrs,
);
}
hir::ImplItemKind::Fn(ref sig, body) => {
self.process_method(
sig,
Some(body),
- impl_item.hir_id,
+ impl_item.hir_id(),
impl_item.ident,
&impl_item.generics,
&impl_item.vis,
.module
.item_ids
.iter()
- .map(|i| id_from_hir_id(i.id, &self.save_ctxt))
+ .map(|i| id_from_def_id(i.def_id.to_def_id()))
.collect();
let span = self.span_from_span(krate.item.span);
+ let attrs = self.tcx.hir().attrs(id);
self.dumper.dump_def(
&Access { public: true, reachable: true },
children,
parent: None,
decl_id: None,
- docs: self.save_ctxt.docs_for_attrs(krate.item.attrs),
+ docs: self.save_ctxt.docs_for_attrs(attrs),
sig: None,
- attributes: lower_attributes(krate.item.attrs.to_owned(), &self.save_ctxt),
+ attributes: lower_attributes(attrs.to_owned(), &self.save_ctxt),
},
);
intravisit::walk_crate(self, krate);
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 ref_id = self.lookup_def_id(item.hir_id).map(id_from_def_id);
+ let access = access_from!(self.save_ctxt, item, item.hir_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 = self
- .save_ctxt
- .tcx
- .hir()
- .opt_local_def_id(item.hir_id)
- .and_then(|id| self.save_ctxt.tcx.parent(id.to_def_id()))
- .map(id_from_def_id);
+ let parent =
+ self.save_ctxt.tcx.parent(item.def_id.to_def_id()).map(id_from_def_id);
self.dumper.import(
&access,
Import {
}
hir::ItemKind::Use(path, hir::UseKind::Glob) => {
// Make a comma-separated list of names of imported modules.
- let def_id = self.tcx.hir().local_def_id(item.hir_id);
- let names = self.tcx.names_imported_by_glob_use(def_id);
+ let names = self.tcx.names_imported_by_glob_use(item.def_id);
let names: Vec<_> = names.iter().map(|n| n.to_string()).collect();
// Otherwise it's a span with wrong macro expansion info, which
// 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.hir_id());
let span = self.span_from_span(sub_span);
- let parent = self
- .save_ctxt
- .tcx
- .hir()
- .opt_local_def_id(item.hir_id)
- .and_then(|id| self.save_ctxt.tcx.parent(id.to_def_id()))
- .map(id_from_def_id);
+ let parent =
+ self.save_ctxt.tcx.parent(item.def_id.to_def_id()).map(id_from_def_id);
self.dumper.import(
&access,
Import {
let name_span = item.ident.span;
if !self.span.filter_generated(name_span) {
let span = self.span_from_span(name_span);
- let parent = self
- .save_ctxt
- .tcx
- .hir()
- .opt_local_def_id(item.hir_id)
- .and_then(|id| self.save_ctxt.tcx.parent(id.to_def_id()))
- .map(id_from_def_id);
+ let parent =
+ self.save_ctxt.tcx.parent(item.def_id.to_def_id()).map(id_from_def_id);
self.dumper.import(
&Access { public: false, reachable: false },
Import {
}
hir::ItemKind::Mod(ref m) => {
self.process_mod(item);
- intravisit::walk_mod(self, m, item.hir_id);
+ intravisit::walk_mod(self, m, item.hir_id());
}
hir::ItemKind::TyAlias(ty, ref generics) => {
- let qualname = format!(
- "::{}",
- self.tcx.def_path_str(self.tcx.hir().local_def_id(item.hir_id).to_def_id())
- );
+ let qualname = format!("::{}", self.tcx.def_path_str(item.def_id.to_def_id()));
let value = ty_to_string(&ty);
if !self.span.filter_generated(item.ident.span) {
let span = self.span_from_span(item.ident.span);
- let id = id_from_hir_id(item.hir_id, &self.save_ctxt);
+ let id = id_from_def_id(item.def_id.to_def_id());
+ 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.hir_id()),
Def {
kind: DefKind::Type,
id,
parent: None,
children: vec![],
decl_id: None,
- docs: self.save_ctxt.docs_for_attrs(&item.attrs),
+ docs: self.save_ctxt.docs_for_attrs(attrs),
sig: sig::item_signature(item, &self.save_ctxt),
- attributes: lower_attributes(item.attrs.to_vec(), &self.save_ctxt),
+ attributes: lower_attributes(attrs.to_vec(), &self.save_ctxt),
},
);
}
self.visit_ty(ty);
- self.process_generic_params(generics, &qualname, item.hir_id);
+ self.process_generic_params(generics, &qualname, item.hir_id());
}
_ => intravisit::walk_item(self, item),
}
});
}
hir::TyKind::OpaqueDef(item_id, _) => {
- let item = self.tcx.hir().item(item_id.id);
- self.nest_typeck_results(self.tcx.hir().local_def_id(item_id.id), |v| {
- v.visit_item(item)
- });
+ let item = self.tcx.hir().item(item_id);
+ self.nest_typeck_results(item_id.def_id, |v| v.visit_item(item));
}
_ => intravisit::walk_ty(self, t),
}
}
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.hir_id());
match item.kind {
hir::ForeignItemKind::Fn(decl, _, ref generics) => {
if let Some(fn_data) = self.save_ctxt.get_extern_item_data(item) {
down_cast_data!(fn_data, DefData, item.span);
- self.process_generic_params(generics, &fn_data.qualname, item.hir_id);
+ self.process_generic_params(generics, &fn_data.qualname, item.hir_id());
self.dumper.dump_def(&access, fn_data);
}