From a66fcca9c9c279db5ab804734a0310b6aec60415 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 19 Dec 2013 19:05:11 -0800 Subject: [PATCH] librustc: De-`@mut` `destructors` in the type context --- src/librustc/middle/ty.rs | 4 ++-- src/librustc/middle/typeck/check/method.rs | 3 ++- src/librustc/middle/typeck/coherence.rs | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index 1d0bc49b8c9..acfe26d2817 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -330,7 +330,7 @@ struct ctxt_ { destructor_for_type: RefCell>, // A method will be in this list if and only if it is a destructor. - destructors: @mut HashSet, + destructors: RefCell>, // Maps a trait onto a list of impls of that trait. trait_impls: @mut HashMap, @@ -1004,7 +1004,7 @@ pub fn mk_ctxt(s: session::Session, provided_method_sources: RefCell::new(HashMap::new()), supertraits: RefCell::new(HashMap::new()), destructor_for_type: RefCell::new(HashMap::new()), - destructors: @mut HashSet::new(), + destructors: RefCell::new(HashSet::new()), trait_impls: @mut HashMap::new(), inherent_impls: @mut HashMap::new(), impls: @mut HashMap::new(), diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs index 56e9f6be55e..524eb6282a8 100644 --- a/src/librustc/middle/typeck/check/method.rs +++ b/src/librustc/middle/typeck/check/method.rs @@ -1151,7 +1151,8 @@ impl<'a> LookupContext<'a> { let bad; match candidate.origin { method_static(method_id) => { - bad = self.tcx().destructors.contains(&method_id); + let destructors = self.tcx().destructors.borrow(); + bad = destructors.get().contains(&method_id); } // XXX: does this properly enforce this on everything now // that self has been merged in? -sully diff --git a/src/librustc/middle/typeck/coherence.rs b/src/librustc/middle/typeck/coherence.rs index 0371f877f4f..aef94e2ec94 100644 --- a/src/librustc/middle/typeck/coherence.rs +++ b/src/librustc/middle/typeck/coherence.rs @@ -709,7 +709,8 @@ impl CoherenceChecker { .borrow_mut(); destructor_for_type.get().insert(type_def_id, method_def_id); - tcx.destructors.insert(method_def_id); + let mut destructors = tcx.destructors.borrow_mut(); + destructors.get().insert(method_def_id); } _ => { // Destructors only work on nominal types.