From a483ee8e33c74ffe2b06e62b934c91ec0aa762ba Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Sun, 22 Dec 2013 14:03:39 -0800 Subject: [PATCH] librustc: De-`@mut` the trait map --- src/librustc/middle/resolve.rs | 8 ++++---- src/librustc/middle/typeck/check/method.rs | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index e9201301987e2..062872187f123 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -46,7 +46,7 @@ struct binding_info { type BindingMap = HashMap; // Trait method resolution -pub type TraitMap = HashMap; +pub type TraitMap = HashMap>; // This is the replacement export map. It maps a module to all of the exports // within. @@ -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(); @@ -5442,7 +5442,7 @@ impl Resolver { trait_id: Option) { 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 => {} } diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs index 57c83adac8876..0d0c26baf9c8a 100644 --- a/src/librustc/middle/typeck/check/method.rs +++ b/src/librustc/middle/typeck/check/method.rs @@ -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);