Skip to content

Commit

Permalink
move direct accesses of node to go through as_local_node_id, unless
Browse files Browse the repository at this point in the history
they are being used as an opaque "position identifier"
  • Loading branch information
nikomatsakis committed Oct 1, 2015
1 parent aa40a1c commit 5600c62
Show file tree
Hide file tree
Showing 57 changed files with 652 additions and 567 deletions.
14 changes: 11 additions & 3 deletions src/librustc/front/map/mod.rs
Expand Up @@ -274,7 +274,7 @@ impl<'ast> Map<'ast> {

pub fn as_local_node_id(&self, def_id: DefId) -> Option<NodeId> {
if def_id.krate == LOCAL_CRATE {
Some(def_id.node)
Some(def_id.xxx_node)
} else {
None
}
Expand All @@ -301,6 +301,10 @@ impl<'ast> Map<'ast> {
}
}

pub fn get_if_local(&self, id: DefId) -> Option<Node<'ast>> {
self.as_local_node_id(id).map(|id| self.get(id))
}

/// Retrieve the Node corresponding to `id`, returning None if
/// cannot be found.
pub fn find(&self, id: NodeId) -> Option<Node<'ast>> {
Expand Down Expand Up @@ -609,9 +613,13 @@ impl<'ast> Map<'ast> {
.unwrap_or_else(|| panic!("AstMap.span: could not find span for id {:?}", id))
}

pub fn span_if_local(&self, id: DefId) -> Option<Span> {
self.as_local_node_id(id).map(|id| self.span(id))
}

pub fn def_id_span(&self, def_id: DefId, fallback: Span) -> Span {
if def_id.is_local() {
self.opt_span(def_id.node).unwrap_or(fallback)
if let Some(node_id) = self.as_local_node_id(def_id) {
self.opt_span(node_id).unwrap_or(fallback)
} else {
fallback
}
Expand Down
74 changes: 37 additions & 37 deletions src/librustc/metadata/csearch.rs
Expand Up @@ -33,7 +33,7 @@ pub struct MethodInfo {

pub fn get_symbol(cstore: &cstore::CStore, def: DefId) -> String {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_symbol(&cdata, def.node)
decoder::get_symbol(&cdata, def.xxx_node)
}

/// Iterates over all the language items in the given crate.
Expand All @@ -59,7 +59,7 @@ pub fn each_child_of_item<F>(cstore: &cstore::CStore,
};
decoder::each_child_of_item(cstore.intr.clone(),
&*crate_data,
def_id.node,
def_id.xxx_node,
get_crate_data,
callback)
}
Expand All @@ -83,7 +83,7 @@ pub fn each_top_level_item_of_crate<F>(cstore: &cstore::CStore,
pub fn get_item_path(tcx: &ty::ctxt, def: DefId) -> Vec<ast_map::PathElem> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
let path = decoder::get_item_path(&*cdata, def.node);
let path = decoder::get_item_path(&*cdata, def.xxx_node);

cdata.with_local_path(|cpath| {
let mut r = Vec::with_capacity(cpath.len() + path.len());
Expand All @@ -96,7 +96,7 @@ pub fn get_item_path(tcx: &ty::ctxt, def: DefId) -> Vec<ast_map::PathElem> {
pub fn get_item_name(tcx: &ty::ctxt, def: DefId) -> ast::Name {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_item_name(&cstore.intr, &cdata, def.node)
decoder::get_item_name(&cstore.intr, &cdata, def.xxx_node)
}

pub enum FoundAst<'ast> {
Expand All @@ -113,87 +113,87 @@ pub fn maybe_get_item_ast<'tcx>(tcx: &ty::ctxt<'tcx>, def: DefId,
-> FoundAst<'tcx> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::maybe_get_item_ast(&*cdata, tcx, def.node, decode_inlined_item)
decoder::maybe_get_item_ast(&*cdata, tcx, def.xxx_node, decode_inlined_item)
}

/// Returns information about the given implementation.
pub fn get_impl_items(cstore: &cstore::CStore, impl_def_id: DefId)
-> Vec<ty::ImplOrTraitItemId> {
let cdata = cstore.get_crate_data(impl_def_id.krate);
decoder::get_impl_items(&*cdata, impl_def_id.node)
decoder::get_impl_items(&*cdata, impl_def_id.xxx_node)
}

pub fn get_impl_or_trait_item<'tcx>(tcx: &ty::ctxt<'tcx>, def: DefId)
-> ty::ImplOrTraitItem<'tcx> {
let cdata = tcx.sess.cstore.get_crate_data(def.krate);
decoder::get_impl_or_trait_item(tcx.sess.cstore.intr.clone(),
&*cdata,
def.node,
def.xxx_node,
tcx)
}

pub fn get_trait_name(cstore: &cstore::CStore, def: DefId) -> ast::Name {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_trait_name(cstore.intr.clone(),
&*cdata,
def.node)
def.xxx_node)
}

pub fn is_static_method(cstore: &cstore::CStore, def: DefId) -> bool {
let cdata = cstore.get_crate_data(def.krate);
decoder::is_static_method(&*cdata, def.node)
decoder::is_static_method(&*cdata, def.xxx_node)
}

pub fn get_trait_item_def_ids(cstore: &cstore::CStore, def: DefId)
-> Vec<ty::ImplOrTraitItemId> {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_trait_item_def_ids(&*cdata, def.node)
decoder::get_trait_item_def_ids(&*cdata, def.xxx_node)
}

pub fn get_item_variances(cstore: &cstore::CStore,
def: DefId) -> ty::ItemVariances {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_item_variances(&*cdata, def.node)
decoder::get_item_variances(&*cdata, def.xxx_node)
}

pub fn get_provided_trait_methods<'tcx>(tcx: &ty::ctxt<'tcx>,
def: DefId)
-> Vec<Rc<ty::Method<'tcx>>> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_provided_trait_methods(cstore.intr.clone(), &*cdata, def.node, tcx)
decoder::get_provided_trait_methods(cstore.intr.clone(), &*cdata, def.xxx_node, tcx)
}

pub fn get_associated_consts<'tcx>(tcx: &ty::ctxt<'tcx>, def: DefId)
-> Vec<Rc<ty::AssociatedConst<'tcx>>> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_associated_consts(cstore.intr.clone(), &*cdata, def.node, tcx)
decoder::get_associated_consts(cstore.intr.clone(), &*cdata, def.xxx_node, tcx)
}

pub fn get_type_name_if_impl(cstore: &cstore::CStore, def: DefId)
-> Option<ast::Name> {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_type_name_if_impl(&*cdata, def.node)
decoder::get_type_name_if_impl(&*cdata, def.xxx_node)
}

pub fn get_methods_if_impl(cstore: &cstore::CStore,
def: DefId)
-> Option<Vec<MethodInfo> > {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_methods_if_impl(cstore.intr.clone(), &*cdata, def.node)
decoder::get_methods_if_impl(cstore.intr.clone(), &*cdata, def.xxx_node)
}

pub fn get_item_attrs(cstore: &cstore::CStore,
def_id: DefId)
-> Vec<ast::Attribute> {
let cdata = cstore.get_crate_data(def_id.krate);
decoder::get_item_attrs(&*cdata, def_id.node)
decoder::get_item_attrs(&*cdata, def_id.xxx_node)
}

pub fn get_struct_field_names(cstore: &cstore::CStore, def: DefId) -> Vec<ast::Name> {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_struct_field_names(&cstore.intr, &*cdata, def.node)
decoder::get_struct_field_names(&cstore.intr, &*cdata, def.xxx_node)
}

pub fn get_struct_field_attrs(cstore: &cstore::CStore, def: DefId) -> FnvHashMap<ast::NodeId,
Expand All @@ -207,35 +207,35 @@ pub fn get_type<'tcx>(tcx: &ty::ctxt<'tcx>,
-> ty::TypeScheme<'tcx> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_type(&*cdata, def.node, tcx)
decoder::get_type(&*cdata, def.xxx_node, tcx)
}

pub fn get_trait_def<'tcx>(tcx: &ty::ctxt<'tcx>, def: DefId) -> ty::TraitDef<'tcx> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_trait_def(&*cdata, def.node, tcx)
decoder::get_trait_def(&*cdata, def.xxx_node, tcx)
}

pub fn get_adt_def<'tcx>(tcx: &ty::ctxt<'tcx>, def: DefId) -> ty::AdtDefMaster<'tcx> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_adt_def(&cstore.intr, &*cdata, def.node, tcx)
decoder::get_adt_def(&cstore.intr, &*cdata, def.xxx_node, tcx)
}

pub fn get_predicates<'tcx>(tcx: &ty::ctxt<'tcx>, def: DefId)
-> ty::GenericPredicates<'tcx>
{
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_predicates(&*cdata, def.node, tcx)
decoder::get_predicates(&*cdata, def.xxx_node, tcx)
}

pub fn get_super_predicates<'tcx>(tcx: &ty::ctxt<'tcx>, def: DefId)
-> ty::GenericPredicates<'tcx>
{
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_super_predicates(&*cdata, def.node, tcx)
decoder::get_super_predicates(&*cdata, def.xxx_node, tcx)
}

pub fn get_impl_polarity<'tcx>(tcx: &ty::ctxt<'tcx>,
Expand All @@ -244,7 +244,7 @@ pub fn get_impl_polarity<'tcx>(tcx: &ty::ctxt<'tcx>,
{
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_impl_polarity(&*cdata, def.node)
decoder::get_impl_polarity(&*cdata, def.xxx_node)
}

pub fn get_custom_coerce_unsized_kind<'tcx>(
Expand All @@ -254,7 +254,7 @@ pub fn get_custom_coerce_unsized_kind<'tcx>(
{
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_custom_coerce_unsized_kind(&*cdata, def.node)
decoder::get_custom_coerce_unsized_kind(&*cdata, def.xxx_node)
}

// Given a def_id for an impl, return the trait it implements,
Expand All @@ -264,7 +264,7 @@ pub fn get_impl_trait<'tcx>(tcx: &ty::ctxt<'tcx>,
-> Option<ty::TraitRef<'tcx>> {
let cstore = &tcx.sess.cstore;
let cdata = cstore.get_crate_data(def.krate);
decoder::get_impl_trait(&*cdata, def.node, tcx)
decoder::get_impl_trait(&*cdata, def.xxx_node, tcx)
}

pub fn get_native_libraries(cstore: &cstore::CStore, crate_num: ast::CrateNum)
Expand All @@ -279,7 +279,7 @@ pub fn each_inherent_implementation_for_type<F>(cstore: &cstore::CStore,
F: FnMut(DefId),
{
let cdata = cstore.get_crate_data(def_id.krate);
decoder::each_inherent_implementation_for_type(&*cdata, def_id.node, callback)
decoder::each_inherent_implementation_for_type(&*cdata, def_id.xxx_node, callback)
}

pub fn each_implementation_for_trait<F>(cstore: &cstore::CStore,
Expand All @@ -300,15 +300,15 @@ pub fn get_trait_of_item(cstore: &cstore::CStore,
tcx: &ty::ctxt)
-> Option<DefId> {
let cdata = cstore.get_crate_data(def_id.krate);
decoder::get_trait_of_item(&*cdata, def_id.node, tcx)
decoder::get_trait_of_item(&*cdata, def_id.xxx_node, tcx)
}

pub fn get_tuple_struct_definition_if_ctor(cstore: &cstore::CStore,
def_id: DefId)
-> Option<DefId>
{
let cdata = cstore.get_crate_data(def_id.krate);
decoder::get_tuple_struct_definition_if_ctor(&*cdata, def_id.node)
decoder::get_tuple_struct_definition_if_ctor(&*cdata, def_id.xxx_node)
}

pub fn get_dylib_dependency_formats(cstore: &cstore::CStore,
Expand All @@ -330,7 +330,7 @@ pub fn get_method_arg_names(cstore: &cstore::CStore, did: DefId)
-> Vec<String>
{
let cdata = cstore.get_crate_data(did.krate);
decoder::get_method_arg_names(&*cdata, did.node)
decoder::get_method_arg_names(&*cdata, did.xxx_node)
}

pub fn get_reachable_ids(cstore: &cstore::CStore, cnum: ast::CrateNum)
Expand All @@ -342,24 +342,24 @@ pub fn get_reachable_ids(cstore: &cstore::CStore, cnum: ast::CrateNum)

pub fn is_typedef(cstore: &cstore::CStore, did: DefId) -> bool {
let cdata = cstore.get_crate_data(did.krate);
decoder::is_typedef(&*cdata, did.node)
decoder::is_typedef(&*cdata, did.xxx_node)
}

pub fn is_const_fn(cstore: &cstore::CStore, did: DefId) -> bool {
let cdata = cstore.get_crate_data(did.krate);
decoder::is_const_fn(&*cdata, did.node)
decoder::is_const_fn(&*cdata, did.xxx_node)
}

pub fn is_impl(cstore: &cstore::CStore, did: DefId) -> bool {
let cdata = cstore.get_crate_data(did.krate);
decoder::is_impl(&*cdata, did.node)
decoder::is_impl(&*cdata, did.xxx_node)
}

pub fn get_stability(cstore: &cstore::CStore,
def: DefId)
-> Option<attr::Stability> {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_stability(&*cdata, def.node)
decoder::get_stability(&*cdata, def.xxx_node)
}

pub fn is_staged_api(cstore: &cstore::CStore, krate: ast::CrateNum) -> bool {
Expand All @@ -369,21 +369,21 @@ pub fn is_staged_api(cstore: &cstore::CStore, krate: ast::CrateNum) -> bool {
pub fn get_repr_attrs(cstore: &cstore::CStore, def: DefId)
-> Vec<attr::ReprAttr> {
let cdata = cstore.get_crate_data(def.krate);
decoder::get_repr_attrs(&*cdata, def.node)
decoder::get_repr_attrs(&*cdata, def.xxx_node)
}

pub fn is_defaulted_trait(cstore: &cstore::CStore, trait_def_id: DefId) -> bool {
let cdata = cstore.get_crate_data(trait_def_id.krate);
decoder::is_defaulted_trait(&*cdata, trait_def_id.node)
decoder::is_defaulted_trait(&*cdata, trait_def_id.xxx_node)
}

pub fn is_default_impl(cstore: &cstore::CStore, impl_did: DefId) -> bool {
let cdata = cstore.get_crate_data(impl_did.krate);
decoder::is_default_impl(&*cdata, impl_did.node)
decoder::is_default_impl(&*cdata, impl_did.xxx_node)
}

pub fn is_extern_fn(cstore: &cstore::CStore, did: DefId,
tcx: &ty::ctxt) -> bool {
let cdata = cstore.get_crate_data(did.krate);
decoder::is_extern_fn(&*cdata, did.node, tcx)
decoder::is_extern_fn(&*cdata, did.xxx_node, tcx)
}

0 comments on commit 5600c62

Please sign in to comment.