diff options
| author | bors <bors@rust-lang.org> | 2014-03-28 20:21:45 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-03-28 20:21:45 -0700 |
| commit | 6584f3746e552a626003f564e2f83262d93cbd57 (patch) | |
| tree | b5ee7f3495c68acd4fb712ca4f762b41bff384fb /src/libsyntax/parse/token.rs | |
| parent | b334f7c3cc3fcab8170ccb46a1f9a12702a2582c (diff) | |
| parent | b0e3cb5f32ec25efb9af65293f9d776b6374b657 (diff) | |
| download | rust-6584f3746e552a626003f564e2f83262d93cbd57.tar.gz rust-6584f3746e552a626003f564e2f83262d93cbd57.zip | |
auto merge of #13170 : eddyb/rust/syntax-cleanup, r=alexcrichton
Removes all Cell's/RefCell's from lexer::Reader implementations and a couple @.
Diffstat (limited to 'src/libsyntax/parse/token.rs')
| -rw-r--r-- | src/libsyntax/parse/token.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index e3eb1f1f711..f0b4ebc593a 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -22,6 +22,7 @@ use std::char; use std::fmt; use std::local_data; use std::path::BytesContainer; +use std::rc::Rc; #[allow(non_camel_case_types)] #[deriving(Clone, Encodable, Decodable, Eq, TotalEq, Hash, Show)] @@ -531,13 +532,14 @@ pub type IdentInterner = StrInterner; // if an interner exists in TLS, return it. Otherwise, prepare a // fresh one. -pub fn get_ident_interner() -> @IdentInterner { - local_data_key!(key: @::parse::token::IdentInterner) - match local_data::get(key, |k| k.map(|k| *k)) { +// FIXME(eddyb) #8726 This should probably use a task-local reference. +pub fn get_ident_interner() -> Rc<IdentInterner> { + local_data_key!(key: Rc<::parse::token::IdentInterner>) + match local_data::get(key, |k| k.map(|k| k.clone())) { Some(interner) => interner, None => { - let interner = @mk_fresh_ident_interner(); - local_data::set(key, interner); + let interner = Rc::new(mk_fresh_ident_interner()); + local_data::set(key, interner.clone()); interner } } |
