diff options
| author | bors <bors@rust-lang.org> | 2015-01-05 00:26:28 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-01-05 00:26:28 +0000 |
| commit | ad9e759382ad7daed26f86732f41f5f83cd673e2 (patch) | |
| tree | f5a33b685a2c86a1a9a75ebf3cf5e1f9322431cd /src/libsyntax | |
| parent | 5773bdefff2e47cc007f5cc2af3f80b30303d45a (diff) | |
| parent | 400c3a0ddcf4441f66eb4653c7365b663f9a4ea1 (diff) | |
| download | rust-ad9e759382ad7daed26f86732f41f5f83cd673e2.tar.gz rust-ad9e759382ad7daed26f86732f41f5f83cd673e2.zip | |
auto merge of #20163 : bfops/rust/master, r=Gankro
TODOs: - ~~Entry is still `<'a, K, V>` instead of `<'a, O, V>`~~ - ~~BTreeMap is still outstanding~~. - ~~Transform appropriate things into `.entry(...).get().or_else(|e| ...)`~~ Things that make me frowny face: - I'm not happy about the fact that this `clone`s the key even when it's already owned. - With small keys (e.g. `int`s), taking a reference seems wasteful. r? @Gankro cc: @cgaebel
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ext/mtwt.rs | 15 | ||||
| -rw-r--r-- | src/libsyntax/ext/tt/macro_parser.rs | 4 |
2 files changed, 8 insertions, 11 deletions
diff --git a/src/libsyntax/ext/mtwt.rs b/src/libsyntax/ext/mtwt.rs index bac82494f28..4075b208f78 100644 --- a/src/libsyntax/ext/mtwt.rs +++ b/src/libsyntax/ext/mtwt.rs @@ -21,7 +21,6 @@ use ast::{Ident, Mrk, Name, SyntaxContext}; use std::cell::RefCell; use std::collections::HashMap; -use std::collections::hash_map::Entry::{Occupied, Vacant}; /// The SCTable contains a table of SyntaxContext_'s. It /// represents a flattened tree structure, to avoid having @@ -67,10 +66,9 @@ pub fn apply_mark(m: Mrk, ctxt: SyntaxContext) -> SyntaxContext { /// Extend a syntax context with a given mark and sctable (explicit memoization) fn apply_mark_internal(m: Mrk, ctxt: SyntaxContext, table: &SCTable) -> SyntaxContext { let key = (ctxt, m); - * match table.mark_memo.borrow_mut().entry(key) { - Vacant(entry) => entry.set(idx_push(&mut *table.table.borrow_mut(), Mark(m, ctxt))), - Occupied(entry) => entry.into_mut(), - } + * table.mark_memo.borrow_mut().entry(&key).get().unwrap_or_else( + |vacant_entry| + vacant_entry.insert(idx_push(&mut *table.table.borrow_mut(), Mark(m, ctxt)))) } /// Extend a syntax context with a given rename @@ -86,10 +84,9 @@ fn apply_rename_internal(id: Ident, table: &SCTable) -> SyntaxContext { let key = (ctxt, id, to); - * match table.rename_memo.borrow_mut().entry(key) { - Vacant(entry) => entry.set(idx_push(&mut *table.table.borrow_mut(), Rename(id, to, ctxt))), - Occupied(entry) => entry.into_mut(), - } + * table.rename_memo.borrow_mut().entry(&key).get().unwrap_or_else( + |vacant_entry| + vacant_entry.insert(idx_push(&mut *table.table.borrow_mut(), Rename(id, to, ctxt)))) } /// Apply a list of renamings to a context diff --git a/src/libsyntax/ext/tt/macro_parser.rs b/src/libsyntax/ext/tt/macro_parser.rs index 69e473055e8..1438d152554 100644 --- a/src/libsyntax/ext/tt/macro_parser.rs +++ b/src/libsyntax/ext/tt/macro_parser.rs @@ -219,9 +219,9 @@ pub fn nameize(p_s: &ParseSess, ms: &[TokenTree], res: &[Rc<NamedMatch>]) } } &TtToken(sp, MatchNt(bind_name, _, _, _)) => { - match ret_val.entry(bind_name) { + match ret_val.entry(&bind_name) { Vacant(spot) => { - spot.set(res[*idx].clone()); + spot.insert(res[*idx].clone()); *idx += 1; } Occupied(..) => { |
