diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2013-12-27 15:19:38 -0800 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2014-01-03 14:01:58 -0800 |
| commit | 522a68d5bcf8129621cc230b32b4d221c4200198 (patch) | |
| tree | b81b1abb31911bcd40e6353084810347b2581ece /src/libsyntax | |
| parent | 8ed6f3e78ffacab3e9beabde0016c9d66a8e3f13 (diff) | |
| download | rust-522a68d5bcf8129621cc230b32b4d221c4200198.tar.gz rust-522a68d5bcf8129621cc230b32b4d221c4200198.zip | |
libsyntax: De-`@mut` the resolve table
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast_util.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index f93eb6754ad..0ed5a24fef8 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -17,6 +17,7 @@ use parse::token; use visit::Visitor; use visit; +use std::cell::RefCell; use std::hashmap::HashMap; use std::u32; use std::local_data; @@ -799,7 +800,9 @@ fn idx_push<T>(vec: &mut ~[T], val: T) -> u32 { /// Resolve a syntax object to a name, per MTWT. pub fn mtwt_resolve(id : Ident) -> Name { - resolve_internal(id, get_sctable(), get_resolve_table()) + let resolve_table = get_resolve_table(); + let mut resolve_table = resolve_table.borrow_mut(); + resolve_internal(id, get_sctable(), resolve_table.get()) } // FIXME #8215: must be pub for testing @@ -807,12 +810,12 @@ pub type ResolveTable = HashMap<(Name,SyntaxContext),Name>; // okay, I admit, putting this in TLS is not so nice: // fetch the SCTable from TLS, create one if it doesn't yet exist. -pub fn get_resolve_table() -> @mut ResolveTable { - local_data_key!(resolve_table_key: @@mut ResolveTable) +pub fn get_resolve_table() -> @RefCell<ResolveTable> { + local_data_key!(resolve_table_key: @@RefCell<ResolveTable>) match local_data::get(resolve_table_key, |k| k.map(|k| *k)) { None => { - let new_table = @@mut HashMap::new(); - local_data::set(resolve_table_key,new_table); + let new_table = @@RefCell::new(HashMap::new()); + local_data::set(resolve_table_key, new_table); *new_table }, Some(intr) => *intr |
