diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2014-03-27 19:28:38 +0200 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2014-03-28 18:28:04 +0200 |
| commit | f65638e669256f37ddaf4ada6617b57cc6dee0da (patch) | |
| tree | 6797b5bfd7c386022e0161881df213dbf62e21a6 /src/libsyntax/parse | |
| parent | 83c4e25d93ab936567df8fa5c338b5d05c1245ec (diff) | |
| download | rust-f65638e669256f37ddaf4ada6617b57cc6dee0da.tar.gz rust-f65638e669256f37ddaf4ada6617b57cc6dee0da.zip | |
De-@ IdentInterner.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 12 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 3618978d5c6..0d33c263438 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -329,7 +329,7 @@ pub struct Parser<'a> { restriction: restriction, quote_depth: uint, // not (yet) related to the quasiquoter reader: ~Reader:, - interner: @token::IdentInterner, + interner: Rc<token::IdentInterner>, /// The set of seen errors about obsolete syntax. Used to suppress /// extra detail when the same error is seen twice obsolete_set: HashSet<ObsoleteSyntax>, diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 7bb920bdf56..01bdaa381cb 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 } } |
