qualname: qualname,
declaration: None,
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(item.id).unwrap_or(0),
+ scope: self.enclosing_scope(item.id),
})
}
ast::ItemStatic(ref typ, mt, ref expr) => {
name: get_ident(item.ident).to_string(),
qualname: qualname,
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(item.id).unwrap_or(0),
+ scope: self.enclosing_scope(item.id),
value: value,
type_value: ty_to_string(&typ),
})
name: get_ident(item.ident).to_string(),
qualname: qualname,
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(item.id).unwrap_or(0),
+ scope: selfenclosing_scope(item.id),
value: self.span_utils.snippet(expr.span),
type_value: ty_to_string(&typ),
})
name: get_ident(item.ident).to_string(),
qualname: qualname,
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(item.id).unwrap_or(0),
+ scope: self.enclosing_scope(item.id),
filename: filename,
})
},
value: val,
span: sub_span.unwrap(),
qualname: enum_name,
- scope: self.tcx.map.get_enclosing_scope(item.id).unwrap_or(0),
+ scope: self.enclosing_scope(item.id),
})
},
ast::ItemImpl(_, _, _, ref trait_ref, ref typ, _) => {
let mut type_data = None;
let sub_span;
- let parent = self.tcx.map.get_enclosing_scope(item.id).unwrap_or(0);
+ let parent = self.enclosing_scope(item.id);
match typ.node {
// Common case impl for a struct or something basic.
}
}
- // FIXME: we ought to be able to get the parent id ourselves, but we can't
- // for now.
- pub fn get_field_data(&self, field: &ast::StructField, parent: NodeId) -> Option<Data> {
+ pub fn get_field_data(&self, field: &ast::StructField, scope: NodeId) -> Option<Data> {
match field.node.kind {
ast::NamedField(ident, _) => {
let name = get_ident(ident);
let qualname = format!("::{}::{}",
- self.tcx.map.path_to_string(parent),
+ self.tcx.map.path_to_string(scope),
name);
let typ = self.tcx.node_types().get(&field.node.id).unwrap()
.to_string();
name: get_ident(ident).to_string(),
qualname: qualname,
span: sub_span.unwrap(),
- scope: parent,
+ scope: scope,
value: "".to_owned(),
type_value: typ,
}))
}
}
- // FIXME: we ought to be able to get the parent id ourselves, but we can't
- // for now.
pub fn get_trait_ref_data(&self,
trait_ref: &ast::TraitRef,
parent: NodeId)
return Some(Data::VariableRefData(VariableRefData {
name: get_ident(ident.node).to_string(),
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(expr.id).unwrap_or(0),
+ scope: self.enclosing_scope(expr.id),
ref_id: f.id,
}));
}
let sub_span = self.span_utils.span_for_last_ident(path.span);
Some(Data::TypeRefData(TypeRefData {
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(expr.id).unwrap_or(0),
+ scope: self.enclosing_scope(expr.id),
ref_id: def_id,
}))
}
ty::TraitContainer(_) => (None, Some(method_id))
};
let sub_span = self.span_utils.sub_span_for_meth_name(expr.span);
- let parent = self.tcx.map.get_enclosing_scope(expr.id).unwrap_or(0);
+ let parent = self.enclosing_scope(expr.id);
Some(Data::MethodCallData(MethodCallData {
span: sub_span.unwrap(),
scope: parent,
Data::VariableRefData(VariableRefData {
name: self.span_utils.snippet(sub_span.unwrap()),
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(id).unwrap_or(0),
+ scope: self.enclosing_scope(id),
ref_id: def.def_id(),
})
}
Data::TypeRefData(TypeRefData {
span: sub_span.unwrap(),
ref_id: def_id,
- scope: self.tcx.map.get_enclosing_scope(id).unwrap_or(0),
+ scope: self.enclosing_scope(id),
})
}
def::DefMethod(decl_id, provenence) => {
};
Data::MethodCallData(MethodCallData {
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(id).unwrap_or(0),
+ scope: self.enclosing_scope(id),
ref_id: def_id,
decl_id: Some(decl_id),
})
Data::FunctionCallData(FunctionCallData {
ref_id: def_id,
span: sub_span.unwrap(),
- scope: self.tcx.map.get_enclosing_scope(id).unwrap_or(0),
+ scope: self.enclosing_scope(id),
})
}
_ => self.tcx.sess.span_bug(path.span,
}
}
+ #[inline]
+ fn enclosing_scope(&self, id: NodeId) -> NodeId {
+ self.tcx.map.get_enclosing_scope(id).unwrap_or(0)
+ }
}
// An AST visitor for collecting paths from patterns.