Skip to content

Commit

Permalink
librustc: De-@mut the trait map
Browse files Browse the repository at this point in the history
  • Loading branch information
pcwalton committed Dec 26, 2013
1 parent d3fc7b9 commit a483ee8
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
8 changes: 4 additions & 4 deletions src/librustc/middle/resolve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ struct binding_info {
type BindingMap = HashMap<Name,binding_info>;

// Trait method resolution
pub type TraitMap = HashMap<NodeId,@mut ~[DefId]>;
pub type TraitMap = HashMap<NodeId,@RefCell<~[DefId]>>;

// This is the replacement export map. It maps a module to all of the exports
// within.
Expand Down Expand Up @@ -5244,14 +5244,14 @@ impl Resolver {
// the field name so that we can do some nice error reporting
// later on in typeck.
let traits = self.search_for_traits_containing_method(ident);
self.trait_map.insert(expr.id, @mut traits);
self.trait_map.insert(expr.id, @RefCell::new(traits));
}
ExprMethodCall(_, _, ident, _, _, _) => {
debug!("(recording candidate traits for expr) recording \
traits for {}",
expr.id);
let traits = self.search_for_traits_containing_method(ident);
self.trait_map.insert(expr.id, @mut traits);
self.trait_map.insert(expr.id, @RefCell::new(traits));
}
ExprBinary(_, BiAdd, _, _) | ExprAssignOp(_, BiAdd, _, _) => {
let i = self.lang_items.add_trait();
Expand Down Expand Up @@ -5442,7 +5442,7 @@ impl Resolver {
trait_id: Option<DefId>) {
match trait_id {
Some(trait_id) => {
self.trait_map.insert(expr_id, @mut ~[trait_id]);
self.trait_map.insert(expr_id, @RefCell::new(~[trait_id]));
}
None => {}
}
Expand Down
3 changes: 2 additions & 1 deletion src/librustc/middle/typeck/check/method.rs
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,8 @@ impl<'a> LookupContext<'a> {
let trait_map: &resolve::TraitMap = &self.fcx.ccx.trait_map;
let opt_applicable_traits = trait_map.find(&self.expr.id);
for applicable_traits in opt_applicable_traits.iter() {
for trait_did in applicable_traits.iter() {
let applicable_traits = applicable_traits.borrow();
for trait_did in applicable_traits.get().iter() {
ty::populate_implementations_for_trait_if_necessary(
self.tcx(),
*trait_did);
Expand Down

0 comments on commit a483ee8

Please sign in to comment.