rename Linear{Map,Set} => Hash{Map,Set}

This commit is contained in:
Daniel Micay 2013-04-03 09:28:36 -04:00
parent 44029a5bbc
commit cc148b58ff
75 changed files with 523 additions and 523 deletions

View File

@ -441,10 +441,10 @@ expression context, the final namespace qualifier is omitted.
Two examples of paths with type arguments:
~~~~
# use core::hashmap::LinearMap;
# use core::hashmap::HashMap;
# fn f() {
# fn id<T:Copy>(t: T) -> T { t }
type t = LinearMap<int,~str>; // Type arguments used in a type expression
type t = HashMap<int,~str>; // Type arguments used in a type expression
let x = id::<int>(10); // Type arguments used in a call expression
# }
~~~~

View File

@ -1888,8 +1888,8 @@ illegal to copy and pass by value.
Generic `type`, `struct`, and `enum` declarations follow the same pattern:
~~~~
# use core::hashmap::LinearMap;
type Set<T> = LinearMap<T, ()>;
# use core::hashmap::HashMap;
type Set<T> = HashMap<T, ()>;
struct Stack<T> {
elements: ~[T]

View File

@ -43,7 +43,7 @@ use io;
use libc::{size_t, uintptr_t};
use option::{None, Option, Some};
use ptr;
use hashmap::LinearSet;
use hashmap::HashSet;
use stackwalk;
use sys;
@ -344,7 +344,7 @@ pub fn cleanup_stack_for_failure() {
ptr::null()
};
let mut roots = LinearSet::new();
let mut roots = HashSet::new();
for walk_gc_roots(need_cleanup, sentinel) |root, tydesc| {
// Track roots to avoid double frees.
if roots.contains(&*root) {

View File

@ -35,7 +35,7 @@ struct Bucket<K,V> {
value: V,
}
pub struct LinearMap<K,V> {
pub struct HashMap<K,V> {
priv k0: u64,
priv k1: u64,
priv resize_at: uint,
@ -55,7 +55,7 @@ fn resize_at(capacity: uint) -> uint {
}
pub fn linear_map_with_capacity<K:Eq + Hash,V>(
initial_capacity: uint) -> LinearMap<K, V> {
initial_capacity: uint) -> HashMap<K, V> {
let r = rand::task_rng();
linear_map_with_capacity_and_keys(r.gen_u64(), r.gen_u64(),
initial_capacity)
@ -63,8 +63,8 @@ pub fn linear_map_with_capacity<K:Eq + Hash,V>(
fn linear_map_with_capacity_and_keys<K:Eq + Hash,V>(
k0: u64, k1: u64,
initial_capacity: uint) -> LinearMap<K, V> {
LinearMap {
initial_capacity: uint) -> HashMap<K, V> {
HashMap {
k0: k0, k1: k1,
resize_at: resize_at(initial_capacity),
size: 0,
@ -72,7 +72,7 @@ fn linear_map_with_capacity_and_keys<K:Eq + Hash,V>(
}
}
priv impl<K:Hash + IterBytes + Eq,V> LinearMap<K, V> {
priv impl<K:Hash + IterBytes + Eq,V> HashMap<K, V> {
#[inline(always)]
fn to_bucket(&self, h: uint) -> uint {
// A good hash function with entropy spread over all of the
@ -190,7 +190,7 @@ priv impl<K:Hash + IterBytes + Eq,V> LinearMap<K, V> {
fn value_for_bucket(&self, idx: uint) -> &'self V {
match self.buckets[idx] {
Some(ref bkt) => &bkt.value,
None => fail!(~"LinearMap::find: internal logic error"),
None => fail!(~"HashMap::find: internal logic error"),
}
}
@ -280,7 +280,7 @@ priv impl<K:Hash + IterBytes + Eq,V> LinearMap<K, V> {
}
impl<'self,K:Hash + IterBytes + Eq,V>
BaseIter<(&'self K, &'self V)> for LinearMap<K, V> {
BaseIter<(&'self K, &'self V)> for HashMap<K, V> {
/// Visit all key-value pairs
fn each(&self, blk: &fn(&(&'self K, &'self V)) -> bool) {
for uint::range(0, self.buckets.len()) |i| {
@ -297,7 +297,7 @@ impl<'self,K:Hash + IterBytes + Eq,V>
}
impl<K:Hash + IterBytes + Eq,V> Container for LinearMap<K, V> {
impl<K:Hash + IterBytes + Eq,V> Container for HashMap<K, V> {
/// Return the number of elements in the map
fn len(&const self) -> uint { self.size }
@ -305,7 +305,7 @@ impl<K:Hash + IterBytes + Eq,V> Container for LinearMap<K, V> {
fn is_empty(&const self) -> bool { self.len() == 0 }
}
impl<K:Hash + IterBytes + Eq,V> Mutable for LinearMap<K, V> {
impl<K:Hash + IterBytes + Eq,V> Mutable for HashMap<K, V> {
/// Clear the map, removing all key-value pairs.
fn clear(&mut self) {
for uint::range(0, self.buckets.len()) |idx| {
@ -315,7 +315,7 @@ impl<K:Hash + IterBytes + Eq,V> Mutable for LinearMap<K, V> {
}
}
impl<'self,K:Hash + IterBytes + Eq,V> Map<K, V> for LinearMap<K, V> {
impl<'self,K:Hash + IterBytes + Eq,V> Map<K, V> for HashMap<K, V> {
/// Return true if the map contains a value for the specified key
fn contains_key(&self, k: &K) -> bool {
match self.bucket_for_key(k) {
@ -391,15 +391,15 @@ impl<'self,K:Hash + IterBytes + Eq,V> Map<K, V> for LinearMap<K, V> {
}
}
pub impl<K: Hash + IterBytes + Eq, V> LinearMap<K, V> {
/// Create an empty LinearMap
fn new() -> LinearMap<K, V> {
LinearMap::with_capacity(INITIAL_CAPACITY)
pub impl<K: Hash + IterBytes + Eq, V> HashMap<K, V> {
/// Create an empty HashMap
fn new() -> HashMap<K, V> {
HashMap::with_capacity(INITIAL_CAPACITY)
}
/// Create an empty LinearMap with space for at least `n` elements in
/// Create an empty HashMap with space for at least `n` elements in
/// the hash table.
fn with_capacity(capacity: uint) -> LinearMap<K, V> {
fn with_capacity(capacity: uint) -> HashMap<K, V> {
linear_map_with_capacity(capacity)
}
@ -541,8 +541,8 @@ pub impl<K: Hash + IterBytes + Eq, V> LinearMap<K, V> {
}
}
impl<K:Hash + IterBytes + Eq,V:Eq> Eq for LinearMap<K, V> {
fn eq(&self, other: &LinearMap<K, V>) -> bool {
impl<K:Hash + IterBytes + Eq,V:Eq> Eq for HashMap<K, V> {
fn eq(&self, other: &HashMap<K, V>) -> bool {
if self.len() != other.len() { return false; }
for self.each |&(key, value)| {
@ -555,25 +555,25 @@ impl<K:Hash + IterBytes + Eq,V:Eq> Eq for LinearMap<K, V> {
true
}
fn ne(&self, other: &LinearMap<K, V>) -> bool { !self.eq(other) }
fn ne(&self, other: &HashMap<K, V>) -> bool { !self.eq(other) }
}
pub struct LinearSet<T> {
priv map: LinearMap<T, ()>
pub struct HashSet<T> {
priv map: HashMap<T, ()>
}
impl<T:Hash + IterBytes + Eq> BaseIter<T> for LinearSet<T> {
impl<T:Hash + IterBytes + Eq> BaseIter<T> for HashSet<T> {
/// Visit all values in order
fn each(&self, f: &fn(&T) -> bool) { self.map.each_key(f) }
fn size_hint(&self) -> Option<uint> { Some(self.len()) }
}
impl<T:Hash + IterBytes + Eq> Eq for LinearSet<T> {
fn eq(&self, other: &LinearSet<T>) -> bool { self.map == other.map }
fn ne(&self, other: &LinearSet<T>) -> bool { self.map != other.map }
impl<T:Hash + IterBytes + Eq> Eq for HashSet<T> {
fn eq(&self, other: &HashSet<T>) -> bool { self.map == other.map }
fn ne(&self, other: &HashSet<T>) -> bool { self.map != other.map }
}
impl<T:Hash + IterBytes + Eq> Container for LinearSet<T> {
impl<T:Hash + IterBytes + Eq> Container for HashSet<T> {
/// Return the number of elements in the set
fn len(&const self) -> uint { self.map.len() }
@ -581,12 +581,12 @@ impl<T:Hash + IterBytes + Eq> Container for LinearSet<T> {
fn is_empty(&const self) -> bool { self.map.is_empty() }
}
impl<T:Hash + IterBytes + Eq> Mutable for LinearSet<T> {
impl<T:Hash + IterBytes + Eq> Mutable for HashSet<T> {
/// Clear the set, removing all values.
fn clear(&mut self) { self.map.clear() }
}
impl<T:Hash + IterBytes + Eq> Set<T> for LinearSet<T> {
impl<T:Hash + IterBytes + Eq> Set<T> for HashSet<T> {
/// Return true if the set contains a value
fn contains(&self, value: &T) -> bool { self.map.contains_key(value) }
@ -600,22 +600,22 @@ impl<T:Hash + IterBytes + Eq> Set<T> for LinearSet<T> {
/// Return true if the set has no elements in common with `other`.
/// This is equivalent to checking for an empty intersection.
fn is_disjoint(&self, other: &LinearSet<T>) -> bool {
fn is_disjoint(&self, other: &HashSet<T>) -> bool {
iter::all(self, |v| !other.contains(v))
}
/// Return true if the set is a subset of another
fn is_subset(&self, other: &LinearSet<T>) -> bool {
fn is_subset(&self, other: &HashSet<T>) -> bool {
iter::all(self, |v| other.contains(v))
}
/// Return true if the set is a superset of another
fn is_superset(&self, other: &LinearSet<T>) -> bool {
fn is_superset(&self, other: &HashSet<T>) -> bool {
other.is_subset(self)
}
/// Visit the values representing the difference
fn difference(&self, other: &LinearSet<T>, f: &fn(&T) -> bool) {
fn difference(&self, other: &HashSet<T>, f: &fn(&T) -> bool) {
for self.each |v| {
if !other.contains(v) {
if !f(v) { return }
@ -625,14 +625,14 @@ impl<T:Hash + IterBytes + Eq> Set<T> for LinearSet<T> {
/// Visit the values representing the symmetric difference
fn symmetric_difference(&self,
other: &LinearSet<T>,
other: &HashSet<T>,
f: &fn(&T) -> bool) {
self.difference(other, f);
other.difference(self, f);
}
/// Visit the values representing the intersection
fn intersection(&self, other: &LinearSet<T>, f: &fn(&T) -> bool) {
fn intersection(&self, other: &HashSet<T>, f: &fn(&T) -> bool) {
for self.each |v| {
if other.contains(v) {
if !f(v) { return }
@ -641,7 +641,7 @@ impl<T:Hash + IterBytes + Eq> Set<T> for LinearSet<T> {
}
/// Visit the values representing the union
fn union(&self, other: &LinearSet<T>, f: &fn(&T) -> bool) {
fn union(&self, other: &HashSet<T>, f: &fn(&T) -> bool) {
for self.each |v| {
if !f(v) { return }
}
@ -654,16 +654,16 @@ impl<T:Hash + IterBytes + Eq> Set<T> for LinearSet<T> {
}
}
pub impl <T:Hash + IterBytes + Eq> LinearSet<T> {
/// Create an empty LinearSet
fn new() -> LinearSet<T> {
LinearSet::with_capacity(INITIAL_CAPACITY)
pub impl <T:Hash + IterBytes + Eq> HashSet<T> {
/// Create an empty HashSet
fn new() -> HashSet<T> {
HashSet::with_capacity(INITIAL_CAPACITY)
}
/// Create an empty LinearSet with space for at least `n` elements in
/// Create an empty HashSet with space for at least `n` elements in
/// the hash table.
fn with_capacity(capacity: uint) -> LinearSet<T> {
LinearSet { map: LinearMap::with_capacity(capacity) }
fn with_capacity(capacity: uint) -> HashSet<T> {
HashSet { map: HashMap::with_capacity(capacity) }
}
/// Reserve space for at least `n` elements in the hash table.
@ -686,7 +686,7 @@ mod test_map {
#[test]
pub fn test_insert() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(m.insert(1, 2));
assert!(m.insert(2, 4));
assert!(*m.get(&1) == 2);
@ -695,7 +695,7 @@ mod test_map {
#[test]
fn test_find_mut() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(m.insert(1, 12));
assert!(m.insert(2, 8));
assert!(m.insert(5, 14));
@ -708,7 +708,7 @@ mod test_map {
#[test]
pub fn test_insert_overwrite() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(m.insert(1, 2));
assert!(*m.get(&1) == 2);
assert!(!m.insert(1, 3));
@ -748,7 +748,7 @@ mod test_map {
#[test]
pub fn test_pop() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
m.insert(1, 2);
assert!(m.pop(&1) == Some(2));
assert!(m.pop(&1) == None);
@ -756,7 +756,7 @@ mod test_map {
#[test]
pub fn test_swap() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(m.swap(1, 2) == None);
assert!(m.swap(1, 3) == Some(2));
assert!(m.swap(1, 4) == Some(3));
@ -764,24 +764,24 @@ mod test_map {
#[test]
pub fn test_find_or_insert() {
let mut m = LinearMap::new::<int, int>();
let mut m = HashMap::new::<int, int>();
assert!(m.find_or_insert(1, 2) == &2);
assert!(m.find_or_insert(1, 3) == &2);
}
#[test]
pub fn test_find_or_insert_with() {
let mut m = LinearMap::new::<int, int>();
let mut m = HashMap::new::<int, int>();
assert!(m.find_or_insert_with(1, |_| 2) == &2);
assert!(m.find_or_insert_with(1, |_| 3) == &2);
}
#[test]
pub fn test_consume() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(m.insert(1, 2));
assert!(m.insert(2, 3));
let mut m2 = LinearMap::new();
let mut m2 = HashMap::new();
do m.consume |k, v| {
m2.insert(k, v);
}
@ -807,7 +807,7 @@ mod test_map {
#[test]
pub fn test_find() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(m.find(&1).is_none());
m.insert(1, 2);
match m.find(&1) {
@ -818,12 +818,12 @@ mod test_map {
#[test]
pub fn test_eq() {
let mut m1 = LinearMap::new();
let mut m1 = HashMap::new();
m1.insert(1, 2);
m1.insert(2, 3);
m1.insert(3, 4);
let mut m2 = LinearMap::new();
let mut m2 = HashMap::new();
m2.insert(1, 2);
m2.insert(2, 3);
@ -836,7 +836,7 @@ mod test_map {
#[test]
pub fn test_expand() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(m.len() == 0);
assert!(m.is_empty());
@ -861,8 +861,8 @@ mod test_set {
#[test]
fn test_disjoint() {
let mut xs = LinearSet::new();
let mut ys = LinearSet::new();
let mut xs = HashSet::new();
let mut ys = HashSet::new();
assert!(xs.is_disjoint(&ys));
assert!(ys.is_disjoint(&xs));
assert!(xs.insert(5));
@ -883,13 +883,13 @@ mod test_set {
#[test]
fn test_subset_and_superset() {
let mut a = LinearSet::new();
let mut a = HashSet::new();
assert!(a.insert(0));
assert!(a.insert(5));
assert!(a.insert(11));
assert!(a.insert(7));
let mut b = LinearSet::new();
let mut b = HashSet::new();
assert!(b.insert(0));
assert!(b.insert(7));
assert!(b.insert(19));
@ -912,8 +912,8 @@ mod test_set {
#[test]
fn test_intersection() {
let mut a = LinearSet::new();
let mut b = LinearSet::new();
let mut a = HashSet::new();
let mut b = HashSet::new();
assert!(a.insert(11));
assert!(a.insert(1));
@ -942,8 +942,8 @@ mod test_set {
#[test]
fn test_difference() {
let mut a = LinearSet::new();
let mut b = LinearSet::new();
let mut a = HashSet::new();
let mut b = HashSet::new();
assert!(a.insert(1));
assert!(a.insert(3));
@ -965,8 +965,8 @@ mod test_set {
#[test]
fn test_symmetric_difference() {
let mut a = LinearSet::new();
let mut b = LinearSet::new();
let mut a = HashSet::new();
let mut b = HashSet::new();
assert!(a.insert(1));
assert!(a.insert(3));
@ -991,8 +991,8 @@ mod test_set {
#[test]
fn test_union() {
let mut a = LinearSet::new();
let mut b = LinearSet::new();
let mut a = HashSet::new();
let mut b = HashSet::new();
assert!(a.insert(1));
assert!(a.insert(3));

View File

@ -79,7 +79,7 @@ use comm::{Chan, GenericChan};
use prelude::*;
use unstable;
use ptr;
use hashmap::LinearSet;
use hashmap::HashSet;
use task::local_data_priv::{local_get, local_set};
use task::rt::rust_task;
use task::rt;
@ -96,10 +96,10 @@ macro_rules! move_it (
{ $x:expr } => ( unsafe { let y = *ptr::addr_of(&($x)); y } )
)
type TaskSet = LinearSet<*rust_task>;
type TaskSet = HashSet<*rust_task>;
fn new_taskset() -> TaskSet {
LinearSet::new()
HashSet::new()
}
fn taskset_insert(tasks: &mut TaskSet, task: *rust_task) {
let didnt_overwrite = tasks.insert(task);

View File

@ -34,7 +34,7 @@ use ops::Drop;
use unstable::{Exclusive, exclusive};
use unstable::at_exit::at_exit;
use unstable::intrinsics::atomic_cxchg;
use hashmap::LinearMap;
use hashmap::HashMap;
use sys::Closure;
#[cfg(test)] use unstable::{SharedMutableState, shared_mutable_state};
@ -144,7 +144,7 @@ pub unsafe fn global_data_clone<T:Owned + Clone>(
// destructor. Keys are pointers derived from the type of the
// global value. There is a single GlobalState instance per runtime.
struct GlobalState {
map: LinearMap<uint, (*c_void, ~fn())>
map: HashMap<uint, (*c_void, ~fn())>
}
impl Drop for GlobalState {
@ -171,7 +171,7 @@ fn get_global_state() -> Exclusive<GlobalState> {
// The global state object
let state = GlobalState {
map: LinearMap::new()
map: HashMap::new()
};
// It's under a reference-counted mutex

View File

@ -21,7 +21,7 @@ is trying to shut down.
use cell::Cell;
use comm::{GenericSmartChan, stream};
use comm::{Port, Chan, SharedChan, GenericChan, GenericPort};
use hashmap::LinearMap;
use hashmap::HashMap;
use option::{Some, None};
use unstable::at_exit::at_exit;
use unstable::finally::Finally;
@ -97,7 +97,7 @@ fn create_global_service() -> ~WeakTaskService {
fn run_weak_task_service(port: Port<ServiceMsg>) {
let mut shutdown_map = LinearMap::new();
let mut shutdown_map = HashMap::new();
loop {
match port.recv() {

View File

@ -18,7 +18,7 @@ use core::os;
use core::uint;
use core::util;
use core::vec;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
fn not_win32(os: session::os) -> bool {
match os {
@ -186,7 +186,7 @@ pub fn get_install_prefix_rpath(target_triple: &str) -> Path {
}
pub fn minimize_rpaths(rpaths: &[Path]) -> ~[Path] {
let mut set = LinearSet::new();
let mut set = HashSet::new();
let mut minimized = ~[];
for rpaths.each |rpath| {
if set.insert(rpath.to_str()) {

View File

@ -10,7 +10,7 @@
use core::prelude::*;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::libc::c_uint;
use core::option;
use core::ptr;
@ -1467,8 +1467,8 @@ pub fn SetLinkage(Global: ValueRef, Link: Linkage) {
/* Memory-managed object interface to type handles. */
pub struct TypeNames {
type_names: @mut LinearMap<TypeRef, @str>,
named_types: @mut LinearMap<@str, TypeRef>
type_names: @mut HashMap<TypeRef, @str>,
named_types: @mut HashMap<@str, TypeRef>
}
pub fn associate_type(tn: @TypeNames, s: @str, t: TypeRef) {
@ -1486,8 +1486,8 @@ pub fn name_has_type(tn: @TypeNames, s: @str) -> Option<TypeRef> {
pub fn mk_type_names() -> @TypeNames {
@TypeNames {
type_names: @mut LinearMap::new(),
named_types: @mut LinearMap::new()
type_names: @mut HashMap::new(),
named_types: @mut HashMap::new()
}
}

View File

@ -18,7 +18,7 @@ use metadata::decoder;
use metadata::filesearch::FileSearch;
use metadata::loader;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::vec;
use syntax::attr;
use syntax::codemap::{span, dummy_sp};
@ -302,7 +302,7 @@ fn resolve_crate_deps(e: @mut Env, cdata: @~[u8]) -> cstore::cnum_map {
debug!("resolving deps of external crate");
// The map from crate numbers in the crate we're resolving to local crate
// numbers
let mut cnum_map = LinearMap::new();
let mut cnum_map = HashMap::new();
for decoder::get_crate_deps(e.intr, cdata).each |dep| {
let extrn_cnum = dep.cnum;
let cname = dep.name;

View File

@ -17,7 +17,7 @@ use core::prelude::*;
use metadata::cstore;
use metadata::decoder;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::vec;
use std;
use syntax::ast;
@ -27,7 +27,7 @@ use syntax::parse::token::ident_interner;
// local crate numbers (as generated during this session). Each external
// crate may refer to types in other external crates, and each has their
// own crate numbers.
pub type cnum_map = @mut LinearMap<ast::crate_num, ast::crate_num>;
pub type cnum_map = @mut HashMap<ast::crate_num, ast::crate_num>;
pub struct crate_metadata {
name: @~str,
@ -37,7 +37,7 @@ pub struct crate_metadata {
}
pub struct CStore {
priv metas: LinearMap <ast::crate_num, @crate_metadata>,
priv metas: HashMap <ast::crate_num, @crate_metadata>,
priv extern_mod_crate_map: extern_mod_crate_map,
priv used_crate_files: ~[Path],
priv used_libraries: ~[~str],
@ -46,12 +46,12 @@ pub struct CStore {
}
// Map from node_id's of local extern mod statements to crate numbers
type extern_mod_crate_map = LinearMap<ast::node_id, ast::crate_num>;
type extern_mod_crate_map = HashMap<ast::node_id, ast::crate_num>;
pub fn mk_cstore(intr: @ident_interner) -> CStore {
return CStore {
metas: LinearMap::new(),
extern_mod_crate_map: LinearMap::new(),
metas: HashMap::new(),
extern_mod_crate_map: HashMap::new(),
used_crate_files: ~[],
used_libraries: ~[],
used_link_args: ~[],

View File

@ -25,7 +25,7 @@ use util::ppaux::ty_to_str;
use core::flate;
use core::hash::HashUtil;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::int;
use core::io::{Writer, WriterUtil};
use core::io;
@ -50,7 +50,7 @@ use syntax;
use writer = std::ebml::writer;
// used by astencode:
type abbrev_map = @mut LinearMap<ty::t, tyencode::ty_abbrev>;
type abbrev_map = @mut HashMap<ty::t, tyencode::ty_abbrev>;
pub type encode_inlined_item = @fn(ecx: @EncodeContext,
ebml_w: writer::Encoder,
@ -62,8 +62,8 @@ pub struct EncodeParams {
tcx: ty::ctxt,
reachable: reachable::map,
reexports2: middle::resolve::ExportMap2,
item_symbols: @mut LinearMap<ast::node_id, ~str>,
discrim_symbols: @mut LinearMap<ast::node_id, ~str>,
item_symbols: @mut HashMap<ast::node_id, ~str>,
discrim_symbols: @mut HashMap<ast::node_id, ~str>,
link_meta: LinkMeta,
cstore: @mut cstore::CStore,
encode_inlined_item: encode_inlined_item
@ -89,8 +89,8 @@ pub struct EncodeContext {
stats: @mut Stats,
reachable: reachable::map,
reexports2: middle::resolve::ExportMap2,
item_symbols: @mut LinearMap<ast::node_id, ~str>,
discrim_symbols: @mut LinearMap<ast::node_id, ~str>,
item_symbols: @mut HashMap<ast::node_id, ~str>,
discrim_symbols: @mut HashMap<ast::node_id, ~str>,
link_meta: LinkMeta,
cstore: @mut cstore::CStore,
encode_inlined_item: encode_inlined_item,
@ -1345,7 +1345,7 @@ pub fn encode_metadata(+parms: EncodeParams, crate: &crate) -> ~[u8] {
link_meta: link_meta,
cstore: cstore,
encode_inlined_item: encode_inlined_item,
type_abbrevs: @mut LinearMap::new()
type_abbrevs: @mut HashMap::new()
};
let ebml_w = writer::Encoder(wr as @io::Writer);

View File

@ -16,7 +16,7 @@ use core::prelude::*;
use middle::ty::param_ty;
use middle::ty;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::io::WriterUtil;
use core::io;
use core::uint;
@ -47,7 +47,7 @@ pub struct ty_abbrev {
pub enum abbrev_ctxt {
ac_no_abbrevs,
ac_use_abbrevs(@mut LinearMap<ty::t, ty_abbrev>),
ac_use_abbrevs(@mut HashMap<ty::t, ty_abbrev>),
}
fn cx_uses_abbrevs(cx: @ctxt) -> bool {

View File

@ -31,7 +31,7 @@ use middle::mem_categorization::{lp_comp, lp_deref, lp_local};
use middle::ty;
use util::ppaux::ty_to_str;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use core::uint;
use syntax::ast::m_mutbl;
use syntax::ast;
@ -44,7 +44,7 @@ struct CheckLoanCtxt {
bccx: @BorrowckCtxt,
req_maps: ReqMaps,
reported: LinearSet<ast::node_id>,
reported: HashSet<ast::node_id>,
declared_purity: @mut ast::purity,
fn_args: @mut @~[ast::node_id]
@ -68,7 +68,7 @@ pub fn check_loans(bccx: @BorrowckCtxt,
let clcx = @mut CheckLoanCtxt {
bccx: bccx,
req_maps: req_maps,
reported: LinearSet::new(),
reported: HashSet::new(),
declared_purity: @mut ast::impure_fn,
fn_args: @mut @~[]
};

View File

@ -31,7 +31,7 @@ use middle::ty;
use util::common::indenter;
use util::ppaux::{expr_repr, region_to_str};
use core::hashmap::{LinearSet, LinearMap};
use core::hashmap::{HashSet, HashMap};
use core::vec;
use syntax::ast::{m_const, m_imm, m_mutbl};
use syntax::ast;
@ -72,17 +72,17 @@ struct GatherLoanCtxt {
req_maps: ReqMaps,
item_ub: ast::node_id,
root_ub: ast::node_id,
ignore_adjustments: LinearSet<ast::node_id>
ignore_adjustments: HashSet<ast::node_id>
}
pub fn gather_loans(bccx: @BorrowckCtxt, crate: @ast::crate) -> ReqMaps {
let glcx = @mut GatherLoanCtxt {
bccx: bccx,
req_maps: ReqMaps { req_loan_map: LinearMap::new(),
pure_map: LinearMap::new() },
req_maps: ReqMaps { req_loan_map: HashMap::new(),
pure_map: HashMap::new() },
item_ub: 0,
root_ub: 0,
ignore_adjustments: LinearSet::new()
ignore_adjustments: HashSet::new()
};
let v = visit::mk_vt(@visit::Visitor {visit_expr: req_loans_in_expr,
visit_fn: req_loans_in_fn,

View File

@ -234,7 +234,7 @@ use middle::moves;
use util::common::stmt_set;
use util::ppaux::note_and_explain_region;
use core::hashmap::{LinearSet, LinearMap};
use core::hashmap::{HashSet, HashMap};
use core::io;
use core::result::{Result, Ok, Err};
use core::to_bytes;
@ -260,9 +260,9 @@ pub fn check_crate(
moves_map: moves_map,
capture_map: capture_map,
root_map: root_map(),
mutbl_map: @mut LinearSet::new(),
write_guard_map: @mut LinearSet::new(),
stmt_map: @mut LinearSet::new(),
mutbl_map: @mut HashSet::new(),
write_guard_map: @mut HashSet::new(),
stmt_map: @mut HashSet::new(),
stats: @mut BorrowStats {
loaned_paths_same: 0,
loaned_paths_imm: 0,
@ -333,7 +333,7 @@ pub struct RootInfo {
// a map mapping id's of expressions of gc'd type (@T, @[], etc) where
// the box needs to be kept live to the id of the scope for which they
// must stay live.
pub type root_map = @mut LinearMap<root_map_key, RootInfo>;
pub type root_map = @mut HashMap<root_map_key, RootInfo>;
// the keys to the root map combine the `id` of the expression with
// the number of types that it is autodereferenced. So, for example,
@ -348,11 +348,11 @@ pub struct root_map_key {
// set of ids of local vars / formal arguments that are modified / moved.
// this is used in trans for optimization purposes.
pub type mutbl_map = @mut LinearSet<ast::node_id>;
pub type mutbl_map = @mut HashSet<ast::node_id>;
// A set containing IDs of expressions of gc'd type that need to have a write
// guard.
pub type write_guard_map = @mut LinearSet<root_map_key>;
pub type write_guard_map = @mut HashSet<root_map_key>;
// Errors that can occur
#[deriving(Eq)]
@ -405,8 +405,8 @@ pub struct Loan {
/// - `pure_map`: map from block/expr that must be pure to the error message
/// that should be reported if they are not pure
pub struct ReqMaps {
req_loan_map: LinearMap<ast::node_id, @mut ~[Loan]>,
pure_map: LinearMap<ast::node_id, bckerr>
req_loan_map: HashMap<ast::node_id, @mut ~[Loan]>,
pure_map: HashMap<ast::node_id, bckerr>
}
pub fn save_and_restore<T:Copy,U>(save_and_restore_t: &mut T,
@ -450,7 +450,7 @@ impl to_bytes::IterBytes for root_map_key {
}
pub fn root_map() -> root_map {
return @mut LinearMap::new();
return @mut HashMap::new();
}
// ___________________________________________________________________________

View File

@ -20,7 +20,7 @@ use core::vec;
use syntax::{ast, ast_map, ast_util, visit};
use syntax::ast::*;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
//
// This pass classifies expressions by their constant-ness.
@ -189,14 +189,14 @@ pub fn lookup_const_by_id(tcx: ty::ctxt,
}
} else {
let maps = astencode::Maps {
mutbl_map: @mut LinearSet::new(),
root_map: @mut LinearMap::new(),
last_use_map: @mut LinearMap::new(),
method_map: @mut LinearMap::new(),
vtable_map: @mut LinearMap::new(),
write_guard_map: @mut LinearSet::new(),
moves_map: @mut LinearSet::new(),
capture_map: @mut LinearMap::new()
mutbl_map: @mut HashSet::new(),
root_map: @mut HashMap::new(),
last_use_map: @mut HashMap::new(),
method_map: @mut HashMap::new(),
vtable_map: @mut HashMap::new(),
write_guard_map: @mut HashSet::new(),
moves_map: @mut HashSet::new(),
capture_map: @mut HashMap::new()
};
match csearch::maybe_get_item_ast(tcx, def_id,
|a, b, c, d| astencode::decode_inlined_item(a, b, maps, /*bar*/ copy c, d)) {

View File

@ -17,7 +17,7 @@ use core::prelude::*;
use middle::resolve;
use middle::ty;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use syntax::codemap::span;
use syntax::{ast, ast_util, visit};
@ -30,7 +30,7 @@ pub struct freevar_entry {
span: span //< First span where it is accessed (there can be multiple)
}
pub type freevar_info = @~[@freevar_entry];
pub type freevar_map = @mut LinearMap<ast::node_id, freevar_info>;
pub type freevar_map = @mut HashMap<ast::node_id, freevar_info>;
// Searches through part of the AST for all references to locals or
// upvars in this frame and returns the list of definition IDs thus found.
@ -39,7 +39,7 @@ pub type freevar_map = @mut LinearMap<ast::node_id, freevar_info>;
// in order to start the search.
fn collect_freevars(def_map: resolve::DefMap, blk: &ast::blk)
-> freevar_info {
let seen = @mut LinearMap::new();
let seen = @mut HashMap::new();
let refs = @mut ~[];
fn ignore_item(_i: @ast::item, &&_depth: int, _v: visit::vt<int>) { }
@ -92,7 +92,7 @@ fn collect_freevars(def_map: resolve::DefMap, blk: &ast::blk)
// one pass. This could be improved upon if it turns out to matter.
pub fn annotate_freevars(def_map: resolve::DefMap, crate: @ast::crate) ->
freevar_map {
let freevars = @mut LinearMap::new();
let freevars = @mut HashMap::new();
let walk_fn: @fn(&visit::fn_kind,
&ast::fn_decl,

View File

@ -31,7 +31,7 @@ use syntax::ast_util::local_def;
use syntax::visit::{default_simple_visitor, mk_simple_visitor, SimpleVisitor};
use syntax::visit::visit_crate;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::ptr;
pub enum LangItem {
@ -259,7 +259,7 @@ fn LanguageItemCollector<'r>(crate: @crate,
session: Session,
items: &'r mut LanguageItems)
-> LanguageItemCollector<'r> {
let mut item_refs = LinearMap::new();
let mut item_refs = HashMap::new();
item_refs.insert(@~"const", ConstTraitLangItem as uint);
item_refs.insert(@~"copy", CopyTraitLangItem as uint);
@ -317,7 +317,7 @@ struct LanguageItemCollector<'self> {
crate: @crate,
session: Session,
item_refs: LinearMap<@~str, uint>,
item_refs: HashMap<@~str, uint>,
}
pub impl<'self> LanguageItemCollector<'self> {

View File

@ -15,7 +15,7 @@ use driver::session;
use middle::ty;
use util::ppaux::{ty_to_str};
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::char;
use core::cmp;
use core::i8;
@ -108,7 +108,7 @@ struct LintSpec {
default: level
}
pub type LintDict = @LinearMap<~str, LintSpec>;
pub type LintDict = @HashMap<~str, LintSpec>;
/*
Pass names should not contain a '-', as the compiler normalizes
@ -273,7 +273,7 @@ pub fn get_lint_dict() -> LintDict {
}),
*/
];
let mut map = LinearMap::new();
let mut map = HashMap::new();
do vec::consume(v) |_, (k, v)| {
map.insert(k, v);
}
@ -282,7 +282,7 @@ pub fn get_lint_dict() -> LintDict {
// This is a highly not-optimal set of data structure decisions.
type LintModes = @mut SmallIntMap<level>;
type LintModeMap = @mut LinearMap<ast::node_id, LintModes>;
type LintModeMap = @mut HashMap<ast::node_id, LintModes>;
// settings_map maps node ids of items with non-default lint settings
// to their settings; default_settings contains the settings for everything
@ -295,7 +295,7 @@ pub struct LintSettings {
pub fn mk_lint_settings() -> LintSettings {
LintSettings {
default_settings: @mut SmallIntMap::new(),
settings_map: @mut LinearMap::new()
settings_map: @mut HashMap::new()
}
}

View File

@ -111,7 +111,7 @@ use middle::typeck;
use middle::moves;
use util::ppaux::ty_to_str;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::io::WriterUtil;
use core::io;
use core::ptr;
@ -134,7 +134,7 @@ use syntax::{visit, ast_util};
//
// Very subtle (#2633): borrowck will remove entries from this table
// if it detects an outstanding loan (that is, the addr is taken).
pub type last_use_map = @mut LinearMap<node_id, @mut ~[node_id]>;
pub type last_use_map = @mut HashMap<node_id, @mut ~[node_id]>;
#[deriving(Eq)]
struct Variable(uint);
@ -172,7 +172,7 @@ pub fn check_crate(tcx: ty::ctxt,
.. *visit::default_visitor()
});
let last_use_map = @mut LinearMap::new();
let last_use_map = @mut HashMap::new();
let initial_maps = @mut IrMaps(tcx,
method_map,
variable_moves_map,
@ -264,9 +264,9 @@ struct IrMaps {
num_live_nodes: uint,
num_vars: uint,
live_node_map: LinearMap<node_id, LiveNode>,
variable_map: LinearMap<node_id, Variable>,
capture_info_map: LinearMap<node_id, @~[CaptureInfo]>,
live_node_map: HashMap<node_id, LiveNode>,
variable_map: HashMap<node_id, Variable>,
capture_info_map: HashMap<node_id, @~[CaptureInfo]>,
var_kinds: ~[VarKind],
lnks: ~[LiveNodeKind],
}
@ -285,9 +285,9 @@ fn IrMaps(tcx: ty::ctxt,
last_use_map: last_use_map,
num_live_nodes: 0,
num_vars: 0,
live_node_map: LinearMap::new(),
variable_map: LinearMap::new(),
capture_info_map: LinearMap::new(),
live_node_map: HashMap::new(),
variable_map: HashMap::new(),
capture_info_map: HashMap::new(),
var_kinds: ~[],
lnks: ~[]
}
@ -612,7 +612,7 @@ static ACC_READ: uint = 1u;
static ACC_WRITE: uint = 2u;
static ACC_USE: uint = 4u;
type LiveNodeMap = @mut LinearMap<node_id, LiveNode>;
type LiveNodeMap = @mut HashMap<node_id, LiveNode>;
struct Liveness {
tcx: ty::ctxt,
@ -639,8 +639,8 @@ fn Liveness(ir: @mut IrMaps, specials: Specials) -> Liveness {
users: @mut vec::from_elem(ir.num_live_nodes * ir.num_vars,
invalid_users()),
loop_scope: @mut ~[],
break_ln: @mut LinearMap::new(),
cont_ln: @mut LinearMap::new()
break_ln: @mut HashMap::new(),
cont_ln: @mut HashMap::new()
}
}

View File

@ -215,7 +215,7 @@ use middle::typeck::method_map;
use util::ppaux;
use util::common::indenter;
use core::hashmap::{LinearSet, LinearMap};
use core::hashmap::{HashSet, HashMap};
use core::vec;
use syntax::ast::*;
use syntax::ast_util;
@ -240,14 +240,14 @@ pub struct CaptureVar {
mode: CaptureMode // How variable is being accessed
}
pub type CaptureMap = @mut LinearMap<node_id, @[CaptureVar]>;
pub type CaptureMap = @mut HashMap<node_id, @[CaptureVar]>;
pub type MovesMap = @mut LinearSet<node_id>;
pub type MovesMap = @mut HashSet<node_id>;
/**
* For each variable which will be moved, links to the
* expression */
pub type VariableMovesMap = @mut LinearMap<node_id, @expr>;
pub type VariableMovesMap = @mut HashMap<node_id, @expr>;
/** See the section Output on the module comment for explanation. */
pub struct MoveMaps {
@ -280,9 +280,9 @@ pub fn compute_moves(tcx: ty::ctxt,
tcx: tcx,
method_map: method_map,
move_maps: MoveMaps {
moves_map: @mut LinearSet::new(),
variable_moves_map: @mut LinearMap::new(),
capture_map: @mut LinearMap::new()
moves_map: @mut HashSet::new(),
variable_moves_map: @mut HashMap::new(),
capture_map: @mut HashMap::new()
}
};
visit::visit_crate(*crate, visit_cx, visitor);

View File

@ -12,17 +12,17 @@ use core::prelude::*;
use middle::resolve;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use syntax::ast::*;
use syntax::ast_util::{path_to_ident, walk_pat};
use syntax::codemap::span;
pub type PatIdMap = LinearMap<ident, node_id>;
pub type PatIdMap = HashMap<ident, node_id>;
// This is used because same-named variables in alternative patterns need to
// use the node_id of their namesake in the first pattern.
pub fn pat_id_map(dm: resolve::DefMap, pat: @pat) -> PatIdMap {
let mut map = LinearMap::new();
let mut map = HashMap::new();
do pat_bindings(dm, pat) |_bm, p_id, _s, n| {
map.insert(path_to_ident(n), p_id);
};

View File

@ -26,7 +26,7 @@ use middle::ty::{region_variance, rv_covariant, rv_invariant};
use middle::ty::{rv_contravariant};
use middle::ty;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::vec;
use syntax::ast_map;
use syntax::codemap::span;
@ -46,7 +46,7 @@ Encodes the bounding lifetime for a given AST node:
- Variables and bindings are mapped to the block in which they are declared.
*/
pub type region_map = @mut LinearMap<ast::node_id, ast::node_id>;
pub type region_map = @mut HashMap<ast::node_id, ast::node_id>;
pub struct ctxt {
sess: Session,
@ -62,7 +62,7 @@ pub struct ctxt {
// the condition in a while loop is always a parent. In those
// cases, we add the node id of such an expression to this set so
// that when we visit it we can view it as a parent.
root_exprs: @mut LinearSet<ast::node_id>,
root_exprs: @mut HashSet<ast::node_id>,
// The parent scope is the innermost block, statement, call, or match
// expression during the execution of which the current expression
@ -350,8 +350,8 @@ pub fn resolve_crate(sess: Session,
-> region_map {
let cx: ctxt = ctxt {sess: sess,
def_map: def_map,
region_map: @mut LinearMap::new(),
root_exprs: @mut LinearSet::new(),
region_map: @mut HashMap::new(),
root_exprs: @mut HashSet::new(),
parent: None};
let visitor = visit::mk_vt(@visit::Visitor {
visit_block: resolve_block,
@ -387,7 +387,7 @@ pub fn resolve_crate(sess: Session,
// a worklist. We can then process the worklist, propagating indirect
// dependencies until a fixed point is reached.
pub type region_paramd_items = @mut LinearMap<ast::node_id, region_variance>;
pub type region_paramd_items = @mut HashMap<ast::node_id, region_variance>;
#[deriving(Eq)]
pub struct region_dep {
@ -395,7 +395,7 @@ pub struct region_dep {
id: ast::node_id
}
pub type dep_map = @mut LinearMap<ast::node_id, @mut ~[region_dep]>;
pub type dep_map = @mut HashMap<ast::node_id, @mut ~[region_dep]>;
pub struct DetermineRpCtxt {
sess: Session,
@ -790,8 +790,8 @@ pub fn determine_rp_in_crate(sess: Session,
sess: sess,
ast_map: ast_map,
def_map: def_map,
region_paramd_items: @mut LinearMap::new(),
dep_map: @mut LinearMap::new(),
region_paramd_items: @mut HashMap::new(),
dep_map: @mut HashMap::new(),
worklist: ~[],
item_id: 0,
anon_implies_rp: false,

View File

@ -77,10 +77,10 @@ use syntax::opt_vec::OptVec;
use core::option::Some;
use core::str::each_split_str;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
// Definition mapping
pub type DefMap = @mut LinearMap<node_id,def>;
pub type DefMap = @mut HashMap<node_id,def>;
pub struct binding_info {
span: span,
@ -88,7 +88,7 @@ pub struct binding_info {
}
// Map from the name in a pattern to its binding mode.
pub type BindingMap = LinearMap<ident,binding_info>;
pub type BindingMap = HashMap<ident,binding_info>;
// Implementation resolution
//
@ -109,11 +109,11 @@ pub struct Impl {
}
// Trait method resolution
pub type TraitMap = LinearMap<node_id,@mut ~[def_id]>;
pub type TraitMap = HashMap<node_id,@mut ~[def_id]>;
// This is the replacement export map. It maps a module to all of the exports
// within.
pub type ExportMap2 = @mut LinearMap<node_id, ~[Export2]>;
pub type ExportMap2 = @mut HashMap<node_id, ~[Export2]>;
pub struct Export2 {
name: @~str, // The name of the target.
@ -328,13 +328,13 @@ pub fn namespace_for_duplicate_checking_mode(mode: DuplicateCheckingMode)
/// One local scope.
pub struct Rib {
bindings: @mut LinearMap<ident,def_like>,
bindings: @mut HashMap<ident,def_like>,
kind: RibKind,
}
pub fn Rib(kind: RibKind) -> Rib {
Rib {
bindings: @mut LinearMap::new(),
bindings: @mut HashMap::new(),
kind: kind
}
}
@ -450,12 +450,12 @@ pub struct Module {
def_id: Option<def_id>,
kind: ModuleKind,
children: @mut LinearMap<ident, @mut NameBindings>,
children: @mut HashMap<ident, @mut NameBindings>,
imports: @mut ~[@ImportDirective],
// The external module children of this node that were declared with
// `extern mod`.
external_module_children: @mut LinearMap<ident, @mut Module>,
external_module_children: @mut HashMap<ident, @mut Module>,
// The anonymous children of this node. Anonymous children are pseudo-
// modules that are implicitly created around items contained within
@ -472,10 +472,10 @@ pub struct Module {
// There will be an anonymous module created around `g` with the ID of the
// entry block for `f`.
anonymous_children: @mut LinearMap<node_id,@mut Module>,
anonymous_children: @mut HashMap<node_id,@mut Module>,
// The status of resolving each import in this module.
import_resolutions: @mut LinearMap<ident, @mut ImportResolution>,
import_resolutions: @mut HashMap<ident, @mut ImportResolution>,
// The number of unresolved globs that this module exports.
glob_count: uint,
@ -492,11 +492,11 @@ pub fn Module(parent_link: ParentLink,
parent_link: parent_link,
def_id: def_id,
kind: kind,
children: @mut LinearMap::new(),
children: @mut HashMap::new(),
imports: @mut ~[],
external_module_children: @mut LinearMap::new(),
anonymous_children: @mut LinearMap::new(),
import_resolutions: @mut LinearMap::new(),
external_module_children: @mut HashMap::new(),
anonymous_children: @mut HashMap::new(),
import_resolutions: @mut HashMap::new(),
glob_count: 0,
resolved_import_count: 0
}
@ -707,7 +707,7 @@ pub fn NameBindings() -> NameBindings {
/// Interns the names of the primitive types.
pub struct PrimitiveTypeTable {
primitive_types: LinearMap<ident,prim_ty>,
primitive_types: HashMap<ident,prim_ty>,
}
pub impl PrimitiveTypeTable {
@ -720,7 +720,7 @@ pub impl PrimitiveTypeTable {
pub fn PrimitiveTypeTable(intr: @ident_interner) -> PrimitiveTypeTable {
let mut table = PrimitiveTypeTable {
primitive_types: LinearMap::new()
primitive_types: HashMap::new()
};
table.intern(intr, @~"bool", ty_bool);
@ -775,8 +775,8 @@ pub fn Resolver(session: Session,
graph_root: graph_root,
trait_info: LinearMap::new(),
structs: LinearSet::new(),
trait_info: HashMap::new(),
structs: HashSet::new(),
unresolved_imports: 0,
@ -799,9 +799,9 @@ pub fn Resolver(session: Session,
attr_main_fn: None,
main_fns: ~[],
def_map: @mut LinearMap::new(),
export_map2: @mut LinearMap::new(),
trait_map: LinearMap::new(),
def_map: @mut HashMap::new(),
export_map2: @mut HashMap::new(),
trait_map: HashMap::new(),
intr: session.intr()
};
@ -819,8 +819,8 @@ pub struct Resolver {
graph_root: @mut NameBindings,
trait_info: LinearMap<def_id, LinearSet<ident>>,
structs: LinearSet<def_id>,
trait_info: HashMap<def_id, HashSet<ident>>,
structs: HashSet<def_id>,
// The number of imports that are currently unresolved.
unresolved_imports: uint,
@ -1309,7 +1309,7 @@ pub impl Resolver {
}
// Add the names of all the methods to the trait info.
let mut method_names = LinearSet::new();
let mut method_names = HashSet::new();
for methods.each |method| {
let ty_m = trait_method_to_ty_method(method);
@ -1543,7 +1543,7 @@ pub impl Resolver {
fn handle_external_def(@mut self,
def: def,
modules: &mut LinearMap<def_id, @mut Module>,
modules: &mut HashMap<def_id, @mut Module>,
child_name_bindings: @mut NameBindings,
final_ident: &str,
ident: ident,
@ -1623,7 +1623,7 @@ pub impl Resolver {
// Nothing to do.
}
Some(method_names) => {
let mut interned_method_names = LinearSet::new();
let mut interned_method_names = HashSet::new();
for method_names.each |method_data| {
let (method_name, self_ty) = *method_data;
debug!("(building reduced graph for \
@ -1663,7 +1663,7 @@ pub impl Resolver {
* crate.
*/
fn build_reduced_graph_for_external_crate(@mut self, root: @mut Module) {
let mut modules = LinearMap::new();
let mut modules = HashMap::new();
// Create all the items reachable by paths.
for each_path(self.session.cstore, root.def_id.get().crate)
@ -3906,7 +3906,7 @@ pub impl Resolver {
}
fn binding_mode_map(@mut self, pat: @pat) -> BindingMap {
let mut result = LinearMap::new();
let mut result = HashMap::new();
do pat_bindings(self.def_map, pat) |binding_mode, _id, sp, path| {
let ident = path_to_ident(path);
result.insert(ident,
@ -3958,7 +3958,7 @@ pub impl Resolver {
fn resolve_arm(@mut self, arm: &arm, visitor: ResolveVisitor) {
self.value_ribs.push(@Rib(NormalRibKind));
let bindings_list = @mut LinearMap::new();
let bindings_list = @mut HashMap::new();
for arm.pats.each |pattern| {
self.resolve_pattern(*pattern, RefutableMode, Immutable,
Some(bindings_list), visitor);
@ -4078,7 +4078,7 @@ pub impl Resolver {
mutability: Mutability,
// Maps idents to the node ID for the (outermost)
// pattern that binds them
bindings_list: Option<@mut LinearMap<ident,node_id>>,
bindings_list: Option<@mut HashMap<ident,node_id>>,
visitor: ResolveVisitor) {
let pat_id = pattern.id;
do walk_pat(pattern) |pattern| {
@ -4282,7 +4282,7 @@ pub impl Resolver {
}
pat_struct(path, _, _) => {
let structs: &mut LinearSet<def_id> = &mut self.structs;
let structs: &mut HashSet<def_id> = &mut self.structs;
match self.resolve_path(path, TypeNS, false, visitor) {
Some(def_ty(class_id))
if structs.contains(&class_id) => {
@ -4791,7 +4791,7 @@ pub impl Resolver {
expr_struct(path, _, _) => {
// Resolve the path to the structure it goes to.
let structs: &mut LinearSet<def_id> = &mut self.structs;
let structs: &mut HashSet<def_id> = &mut self.structs;
match self.resolve_path(path, TypeNS, false, visitor) {
Some(def_ty(class_id)) | Some(def_struct(class_id))
if structs.contains(&class_id) => {

View File

@ -167,7 +167,7 @@ use middle::trans::type_of;
use middle::ty;
use util::common::indenter;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use syntax::ast;
use syntax::ast::ident;
use syntax::ast_util::path_to_ident;
@ -323,7 +323,7 @@ pub struct BindingInfo {
ty: ty::t,
}
pub type BindingsMap = LinearMap<ident, BindingInfo>;
pub type BindingsMap = HashMap<ident, BindingInfo>;
pub struct ArmData<'self> {
bodycx: block,
@ -1620,7 +1620,7 @@ pub fn trans_match_inner(scope_cx: block,
// to an alloca() that will be the value for that local variable.
// Note that we use the names because each binding will have many ids
// from the various alternatives.
let mut bindings_map = LinearMap::new();
let mut bindings_map = HashMap::new();
do pat_bindings(tcx.def_map, arm.pats[0]) |bm, p_id, _s, path| {
let ident = path_to_ident(path);
let variable_ty = node_id_type(bcx, p_id);

View File

@ -67,7 +67,7 @@ use util::ppaux::ty_to_str;
use util::ppaux;
use core::hash;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::int;
use core::io;
use core::libc::{c_uint, c_ulonglong};
@ -1609,9 +1609,9 @@ pub fn new_fn_ctxt_w_id(ccx: @CrateContext,
llself: None,
personality: None,
loop_ret: None,
llargs: @mut LinearMap::new(),
lllocals: @mut LinearMap::new(),
llupvars: @mut LinearMap::new(),
llargs: @mut HashMap::new(),
lllocals: @mut HashMap::new(),
llupvars: @mut HashMap::new(),
id: id,
impl_id: impl_id,
param_substs: param_substs,
@ -2610,7 +2610,7 @@ pub fn p2i(ccx: @CrateContext, v: ValueRef) -> ValueRef {
}
}
pub fn declare_intrinsics(llmod: ModuleRef) -> LinearMap<~str, ValueRef> {
pub fn declare_intrinsics(llmod: ModuleRef) -> HashMap<~str, ValueRef> {
let T_memcpy32_args: ~[TypeRef] =
~[T_ptr(T_i8()), T_ptr(T_i8()), T_i32(), T_i32(), T_i1()];
let T_memcpy64_args: ~[TypeRef] =
@ -2743,7 +2743,7 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> LinearMap<~str, ValueRef> {
let bswap64 = decl_cdecl_fn(llmod, ~"llvm.bswap.i64",
T_fn(~[T_i64()], T_i64()));
let mut intrinsics = LinearMap::new();
let mut intrinsics = HashMap::new();
intrinsics.insert(~"llvm.gcroot", gcroot);
intrinsics.insert(~"llvm.gcread", gcread);
intrinsics.insert(~"llvm.memcpy.p0i8.p0i8.i32", memcpy32);
@ -2804,7 +2804,7 @@ pub fn declare_intrinsics(llmod: ModuleRef) -> LinearMap<~str, ValueRef> {
}
pub fn declare_dbg_intrinsics(llmod: ModuleRef,
intrinsics: &mut LinearMap<~str, ValueRef>) {
intrinsics: &mut HashMap<~str, ValueRef>) {
let declare =
decl_cdecl_fn(llmod, ~"llvm.dbg.declare",
T_fn(~[T_metadata(), T_metadata()], T_void()));
@ -3052,37 +3052,37 @@ pub fn trans_crate(sess: session::Session,
llmod: llmod,
td: td,
tn: tn,
externs: @mut LinearMap::new(),
externs: @mut HashMap::new(),
intrinsics: intrinsics,
item_vals: @mut LinearMap::new(),
item_vals: @mut HashMap::new(),
exp_map2: emap2,
reachable: reachable,
item_symbols: @mut LinearMap::new(),
item_symbols: @mut HashMap::new(),
link_meta: link_meta,
enum_sizes: @mut LinearMap::new(),
discrims: @mut LinearMap::new(),
discrim_symbols: @mut LinearMap::new(),
tydescs: @mut LinearMap::new(),
enum_sizes: @mut HashMap::new(),
discrims: @mut HashMap::new(),
discrim_symbols: @mut HashMap::new(),
tydescs: @mut HashMap::new(),
finished_tydescs: @mut false,
external: @mut LinearMap::new(),
monomorphized: @mut LinearMap::new(),
monomorphizing: @mut LinearMap::new(),
type_use_cache: @mut LinearMap::new(),
vtables: @mut LinearMap::new(),
const_cstr_cache: @mut LinearMap::new(),
const_globals: @mut LinearMap::new(),
const_values: @mut LinearMap::new(),
extern_const_values: @mut LinearMap::new(),
module_data: @mut LinearMap::new(),
lltypes: @mut LinearMap::new(),
llsizingtypes: @mut LinearMap::new(),
adt_reprs: @mut LinearMap::new(),
external: @mut HashMap::new(),
monomorphized: @mut HashMap::new(),
monomorphizing: @mut HashMap::new(),
type_use_cache: @mut HashMap::new(),
vtables: @mut HashMap::new(),
const_cstr_cache: @mut HashMap::new(),
const_globals: @mut HashMap::new(),
const_values: @mut HashMap::new(),
extern_const_values: @mut HashMap::new(),
module_data: @mut HashMap::new(),
lltypes: @mut HashMap::new(),
llsizingtypes: @mut HashMap::new(),
adt_reprs: @mut HashMap::new(),
names: new_namegen(sess.parse_sess.interner),
next_addrspace: new_addrspace_gen(),
symbol_hasher: symbol_hasher,
type_hashcodes: @mut LinearMap::new(),
type_short_names: @mut LinearMap::new(),
all_llvm_symbols: @mut LinearSet::new(),
type_hashcodes: @mut HashMap::new(),
type_short_names: @mut HashMap::new(),
all_llvm_symbols: @mut HashSet::new(),
tcx: tcx,
maps: maps,
stats: @mut Stats {
@ -3095,7 +3095,7 @@ pub fn trans_crate(sess: session::Session,
n_inlines: 0u,
n_closures: 0u,
llvm_insn_ctxt: @mut ~[],
llvm_insns: @mut LinearMap::new(),
llvm_insns: @mut HashMap::new(),
fn_times: @mut ~[]
},
upcalls: upcall::declare_upcalls(targ_cfg, llmod),

View File

@ -18,7 +18,7 @@ use syntax::codemap::span;
use core::prelude::*;
use core::cast;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::libc::{c_uint, c_ulonglong, c_char};
use core::libc;
use core::option::Some;
@ -55,7 +55,7 @@ pub fn count_insn(cx: block, category: &str) {
// Build version of path with cycles removed.
// Pass 1: scan table mapping str -> rightmost pos.
let mut mm = LinearMap::new();
let mut mm = HashMap::new();
let len = vec::len(*v);
let mut i = 0u;
while i < len {

View File

@ -45,7 +45,7 @@ use util::ppaux::{expr_repr, ty_to_str};
use core::cast;
use core::hash;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::libc::{c_uint, c_longlong, c_ulonglong};
use core::ptr;
use core::str;
@ -134,7 +134,7 @@ pub struct Stats {
n_inlines: uint,
n_closures: uint,
llvm_insn_ctxt: @mut ~[~str],
llvm_insns: @mut LinearMap<~str, uint>,
llvm_insns: @mut HashMap<~str, uint>,
fn_times: @mut ~[(~str, int)] // (ident, time)
}
@ -156,7 +156,7 @@ pub fn BuilderRef_res(B: BuilderRef) -> BuilderRef_res {
}
}
pub type ExternMap = @mut LinearMap<@str, ValueRef>;
pub type ExternMap = @mut HashMap<@str, ValueRef>;
// Crate context. Every crate we compile has one of these.
pub struct CrateContext {
@ -165,30 +165,30 @@ pub struct CrateContext {
td: TargetData,
tn: @TypeNames,
externs: ExternMap,
intrinsics: LinearMap<~str, ValueRef>,
item_vals: @mut LinearMap<ast::node_id, ValueRef>,
intrinsics: HashMap<~str, ValueRef>,
item_vals: @mut HashMap<ast::node_id, ValueRef>,
exp_map2: resolve::ExportMap2,
reachable: reachable::map,
item_symbols: @mut LinearMap<ast::node_id, ~str>,
item_symbols: @mut HashMap<ast::node_id, ~str>,
link_meta: LinkMeta,
enum_sizes: @mut LinearMap<ty::t, uint>,
discrims: @mut LinearMap<ast::def_id, ValueRef>,
discrim_symbols: @mut LinearMap<ast::node_id, ~str>,
tydescs: @mut LinearMap<ty::t, @mut tydesc_info>,
enum_sizes: @mut HashMap<ty::t, uint>,
discrims: @mut HashMap<ast::def_id, ValueRef>,
discrim_symbols: @mut HashMap<ast::node_id, ~str>,
tydescs: @mut HashMap<ty::t, @mut tydesc_info>,
// Set when running emit_tydescs to enforce that no more tydescs are
// created.
finished_tydescs: @mut bool,
// Track mapping of external ids to local items imported for inlining
external: @mut LinearMap<ast::def_id, Option<ast::node_id>>,
external: @mut HashMap<ast::def_id, Option<ast::node_id>>,
// Cache instances of monomorphized functions
monomorphized: @mut LinearMap<mono_id, ValueRef>,
monomorphizing: @mut LinearMap<ast::def_id, uint>,
monomorphized: @mut HashMap<mono_id, ValueRef>,
monomorphizing: @mut HashMap<ast::def_id, uint>,
// Cache computed type parameter uses (see type_use.rs)
type_use_cache: @mut LinearMap<ast::def_id, ~[type_use::type_uses]>,
type_use_cache: @mut HashMap<ast::def_id, ~[type_use::type_uses]>,
// Cache generated vtables
vtables: @mut LinearMap<mono_id, ValueRef>,
vtables: @mut HashMap<mono_id, ValueRef>,
// Cache of constant strings,
const_cstr_cache: @mut LinearMap<@~str, ValueRef>,
const_cstr_cache: @mut HashMap<@~str, ValueRef>,
// Reverse-direction for const ptrs cast from globals.
// Key is an int, cast from a ValueRef holding a *T,
@ -198,24 +198,24 @@ pub struct CrateContext {
// when we ptrcast, and we have to ptrcast during translation
// of a [T] const because we form a slice, a [*T,int] pair, not
// a pointer to an LLVM array type.
const_globals: @mut LinearMap<int, ValueRef>,
const_globals: @mut HashMap<int, ValueRef>,
// Cache of emitted const values
const_values: @mut LinearMap<ast::node_id, ValueRef>,
const_values: @mut HashMap<ast::node_id, ValueRef>,
// Cache of external const values
extern_const_values: @mut LinearMap<ast::def_id, ValueRef>,
extern_const_values: @mut HashMap<ast::def_id, ValueRef>,
module_data: @mut LinearMap<~str, ValueRef>,
lltypes: @mut LinearMap<ty::t, TypeRef>,
llsizingtypes: @mut LinearMap<ty::t, TypeRef>,
adt_reprs: @mut LinearMap<ty::t, @adt::Repr>,
module_data: @mut HashMap<~str, ValueRef>,
lltypes: @mut HashMap<ty::t, TypeRef>,
llsizingtypes: @mut HashMap<ty::t, TypeRef>,
adt_reprs: @mut HashMap<ty::t, @adt::Repr>,
names: namegen,
next_addrspace: addrspace_gen,
symbol_hasher: @hash::State,
type_hashcodes: @mut LinearMap<ty::t, @str>,
type_short_names: @mut LinearMap<ty::t, ~str>,
all_llvm_symbols: @mut LinearSet<~str>,
type_hashcodes: @mut HashMap<ty::t, @str>,
type_short_names: @mut HashMap<ty::t, ~str>,
all_llvm_symbols: @mut HashSet<~str>,
tcx: ty::ctxt,
maps: astencode::Maps,
stats: @mut Stats,
@ -314,12 +314,12 @@ pub struct fn_ctxt_ {
loop_ret: Option<(ValueRef, ValueRef)>,
// Maps arguments to allocas created for them in llallocas.
llargs: @mut LinearMap<ast::node_id, local_val>,
llargs: @mut HashMap<ast::node_id, local_val>,
// Maps the def_ids for local variables to the allocas created for
// them in llallocas.
lllocals: @mut LinearMap<ast::node_id, local_val>,
lllocals: @mut HashMap<ast::node_id, local_val>,
// Same as above, but for closure upvars
llupvars: @mut LinearMap<ast::node_id, ValueRef>,
llupvars: @mut HashMap<ast::node_id, ValueRef>,
// The node_id of the function, or -1 if it doesn't correspond to
// a user-defined function.

View File

@ -20,7 +20,7 @@ use middle::trans;
use middle::ty;
use util::ppaux::ty_to_str;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::libc;
use core::option;
use core::sys;
@ -106,7 +106,7 @@ pub struct DebugContext {
pub fn mk_ctxt(+crate: ~str, intr: @ident_interner) -> DebugContext {
DebugContext {
llmetadata: @mut LinearMap::new(),
llmetadata: @mut HashMap::new(),
names: new_namegen(intr),
crate_file: crate
}
@ -151,7 +151,7 @@ struct RetvalMetadata {
id: ast::node_id
}
type metadata_cache = @mut LinearMap<int, ~[debug_metadata]>;
type metadata_cache = @mut HashMap<int, ~[debug_metadata]>;
enum debug_metadata {
file_metadata(@Metadata<FileMetadata>),

View File

@ -153,7 +153,7 @@ use util::common::indenter;
use util::ppaux::ty_to_str;
use core::cast::transmute;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use syntax::print::pprust::{expr_to_str};
use syntax::ast;
use syntax::codemap;
@ -1091,7 +1091,7 @@ pub fn trans_local_var(bcx: block, def: ast::def) -> Datum {
};
fn take_local(bcx: block,
table: &LinearMap<ast::node_id, local_val>,
table: &HashMap<ast::node_id, local_val>,
nid: ast::node_id) -> Datum {
let (v, mode) = match table.find(&nid) {
Some(&local_mem(v)) => (v, ByRef),

View File

@ -21,7 +21,7 @@ use middle::ty;
use middle::typeck;
use core::prelude::*;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use syntax::ast;
use syntax::ast::*;
use syntax::ast_util::def_id_of_def;
@ -30,18 +30,18 @@ use syntax::codemap;
use syntax::print::pprust::expr_to_str;
use syntax::{visit, ast_map};
pub type map = @LinearSet<node_id>;
pub type map = @HashSet<node_id>;
struct ctx<'self> {
exp_map2: resolve::ExportMap2,
tcx: ty::ctxt,
method_map: typeck::method_map,
rmap: &'self mut LinearSet<node_id>,
rmap: &'self mut HashSet<node_id>,
}
pub fn find_reachable(crate_mod: &_mod, exp_map2: resolve::ExportMap2,
tcx: ty::ctxt, method_map: typeck::method_map) -> map {
let mut rmap = LinearSet::new();
let mut rmap = HashSet::new();
{
let cx = ctx {
exp_map2: exp_map2,
@ -96,7 +96,7 @@ fn traverse_public_mod(cx: ctx, mod_id: node_id, m: &_mod) {
fn traverse_public_item(cx: ctx, item: @item) {
// XXX: it shouldn't be necessary to do this
let rmap: &mut LinearSet<node_id> = cx.rmap;
let rmap: &mut HashSet<node_id> = cx.rmap;
if rmap.contains(&item.id) { return; }
rmap.insert(item.id);
match item.node {
@ -154,7 +154,7 @@ fn mk_ty_visitor() -> visit::vt<ctx> {
fn traverse_ty<'a>(ty: @Ty, cx: ctx<'a>, v: visit::vt<ctx<'a>>) {
// XXX: it shouldn't be necessary to do this
let rmap: &mut LinearSet<node_id> = cx.rmap;
let rmap: &mut HashSet<node_id> = cx.rmap;
if rmap.contains(&ty.id) { return; }
rmap.insert(ty.id);

View File

@ -36,7 +36,7 @@ use core::result;
use core::to_bytes;
use core::uint;
use core::vec;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use std::smallintmap::SmallIntMap;
use syntax::ast::*;
use syntax::ast_util::{is_local, local_def};
@ -119,7 +119,7 @@ pub struct creader_cache_key {
len: uint
}
type creader_cache = @mut LinearMap<creader_cache_key, t>;
type creader_cache = @mut HashMap<creader_cache_key, t>;
impl to_bytes::IterBytes for creader_cache_key {
fn iter_bytes(&self, +lsb0: bool, f: to_bytes::Cb) {
@ -210,7 +210,7 @@ pub enum AutoRefKind {
// This is a map from ID of each implementation to the method info and trait
// method ID of each of the default methods belonging to the trait that that
// implementation implements.
pub type ProvidedMethodsMap = @mut LinearMap<def_id,@mut ~[@ProvidedMethodInfo]>;
pub type ProvidedMethodsMap = @mut HashMap<def_id,@mut ~[@ProvidedMethodInfo]>;
// Stores the method info and definition ID of the associated trait method for
// each instantiation of each provided method.
@ -233,7 +233,7 @@ pub type ctxt = @ctxt_;
struct ctxt_ {
diag: @syntax::diagnostic::span_handler,
interner: @mut LinearMap<intern_key, t_box>,
interner: @mut HashMap<intern_key, t_box>,
next_id: @mut uint,
vecs_implicitly_copyable: bool,
legacy_modes: bool,
@ -253,43 +253,43 @@ struct ctxt_ {
// of this node. This only applies to nodes that refer to entities
// parameterized by type parameters, such as generic fns, types, or
// other items.
node_type_substs: @mut LinearMap<node_id, ~[t]>,
node_type_substs: @mut HashMap<node_id, ~[t]>,
items: ast_map::map,
intrinsic_defs: @mut LinearMap<ast::ident, (ast::def_id, t)>,
intrinsic_defs: @mut HashMap<ast::ident, (ast::def_id, t)>,
freevars: freevars::freevar_map,
tcache: type_cache,
rcache: creader_cache,
ccache: constness_cache,
short_names_cache: @mut LinearMap<t, @~str>,
needs_unwind_cleanup_cache: @mut LinearMap<t, bool>,
tc_cache: @mut LinearMap<uint, TypeContents>,
ast_ty_to_ty_cache: @mut LinearMap<node_id, ast_ty_to_ty_cache_entry>,
enum_var_cache: @mut LinearMap<def_id, @~[VariantInfo]>,
trait_method_cache: @mut LinearMap<def_id, @~[method]>,
ty_param_bounds: @mut LinearMap<ast::node_id, param_bounds>,
inferred_modes: @mut LinearMap<ast::node_id, ast::mode>,
adjustments: @mut LinearMap<ast::node_id, @AutoAdjustment>,
normalized_cache: @mut LinearMap<t, t>,
short_names_cache: @mut HashMap<t, @~str>,
needs_unwind_cleanup_cache: @mut HashMap<t, bool>,
tc_cache: @mut HashMap<uint, TypeContents>,
ast_ty_to_ty_cache: @mut HashMap<node_id, ast_ty_to_ty_cache_entry>,
enum_var_cache: @mut HashMap<def_id, @~[VariantInfo]>,
trait_method_cache: @mut HashMap<def_id, @~[method]>,
ty_param_bounds: @mut HashMap<ast::node_id, param_bounds>,
inferred_modes: @mut HashMap<ast::node_id, ast::mode>,
adjustments: @mut HashMap<ast::node_id, @AutoAdjustment>,
normalized_cache: @mut HashMap<t, t>,
lang_items: middle::lang_items::LanguageItems,
// A mapping from an implementation ID to the method info and trait
// method ID of the provided (a.k.a. default) methods in the traits that
// that implementation implements.
provided_methods: ProvidedMethodsMap,
provided_method_sources: @mut LinearMap<ast::def_id, ProvidedMethodSource>,
supertraits: @mut LinearMap<ast::def_id, @~[InstantiatedTraitRef]>,
provided_method_sources: @mut HashMap<ast::def_id, ProvidedMethodSource>,
supertraits: @mut HashMap<ast::def_id, @~[InstantiatedTraitRef]>,
// A mapping from the def ID of an enum or struct type to the def ID
// of the method that implements its destructor. If the type is not
// present in this map, it does not have a destructor. This map is
// populated during the coherence phase of typechecking.
destructor_for_type: @mut LinearMap<ast::def_id, ast::def_id>,
destructor_for_type: @mut HashMap<ast::def_id, ast::def_id>,
// A method will be in this list if and only if it is a destructor.
destructors: @mut LinearSet<ast::def_id>,
destructors: @mut HashSet<ast::def_id>,
// Maps a trait onto a mapping from self-ty to impl
trait_impls: @mut LinearMap<ast::def_id, @mut LinearMap<t, @Impl>>
trait_impls: @mut HashMap<ast::def_id, @mut HashMap<t, @Impl>>
}
enum tbox_flag {
@ -771,18 +771,18 @@ pub struct ty_param_substs_and_ty {
ty: ty::t
}
type type_cache = @mut LinearMap<ast::def_id, ty_param_bounds_and_ty>;
type type_cache = @mut HashMap<ast::def_id, ty_param_bounds_and_ty>;
type constness_cache = @mut LinearMap<ast::def_id, const_eval::constness>;
type constness_cache = @mut HashMap<ast::def_id, const_eval::constness>;
pub type node_type_table = @mut SmallIntMap<t>;
fn mk_rcache() -> creader_cache {
return @mut LinearMap::new();
return @mut HashMap::new();
}
pub fn new_ty_hash<V:Copy>() -> @mut LinearMap<t, V> {
@mut LinearMap::new()
pub fn new_ty_hash<V:Copy>() -> @mut HashMap<t, V> {
@mut HashMap::new()
}
pub fn mk_ctxt(s: session::Session,
@ -809,7 +809,7 @@ pub fn mk_ctxt(s: session::Session,
lint::vecs_implicitly_copyable) == allow;
@ctxt_ {
diag: s.diagnostic(),
interner: @mut LinearMap::new(),
interner: @mut HashMap::new(),
next_id: @mut 0,
vecs_implicitly_copyable: vecs_implicitly_copyable,
legacy_modes: legacy_modes,
@ -819,30 +819,30 @@ pub fn mk_ctxt(s: session::Session,
region_map: region_map,
region_paramd_items: region_paramd_items,
node_types: @mut SmallIntMap::new(),
node_type_substs: @mut LinearMap::new(),
node_type_substs: @mut HashMap::new(),
items: amap,
intrinsic_defs: @mut LinearMap::new(),
intrinsic_defs: @mut HashMap::new(),
freevars: freevars,
tcache: @mut LinearMap::new(),
tcache: @mut HashMap::new(),
rcache: mk_rcache(),
ccache: @mut LinearMap::new(),
ccache: @mut HashMap::new(),
short_names_cache: new_ty_hash(),
needs_unwind_cleanup_cache: new_ty_hash(),
tc_cache: @mut LinearMap::new(),
ast_ty_to_ty_cache: @mut LinearMap::new(),
enum_var_cache: @mut LinearMap::new(),
trait_method_cache: @mut LinearMap::new(),
ty_param_bounds: @mut LinearMap::new(),
inferred_modes: @mut LinearMap::new(),
adjustments: @mut LinearMap::new(),
tc_cache: @mut HashMap::new(),
ast_ty_to_ty_cache: @mut HashMap::new(),
enum_var_cache: @mut HashMap::new(),
trait_method_cache: @mut HashMap::new(),
ty_param_bounds: @mut HashMap::new(),
inferred_modes: @mut HashMap::new(),
adjustments: @mut HashMap::new(),
normalized_cache: new_ty_hash(),
lang_items: lang_items,
provided_methods: @mut LinearMap::new(),
provided_method_sources: @mut LinearMap::new(),
supertraits: @mut LinearMap::new(),
destructor_for_type: @mut LinearMap::new(),
destructors: @mut LinearSet::new(),
trait_impls: @mut LinearMap::new()
provided_methods: @mut HashMap::new(),
provided_method_sources: @mut HashMap::new(),
supertraits: @mut HashMap::new(),
destructor_for_type: @mut HashMap::new(),
destructors: @mut HashSet::new(),
trait_impls: @mut HashMap::new()
}
}
@ -1620,7 +1620,7 @@ pub fn type_needs_unwind_cleanup(cx: ctxt, ty: t) -> bool {
None => ()
}
let mut tycache = LinearSet::new();
let mut tycache = HashSet::new();
let needs_unwind_cleanup =
type_needs_unwind_cleanup_(cx, ty, &mut tycache, false);
cx.needs_unwind_cleanup_cache.insert(ty, needs_unwind_cleanup);
@ -1628,7 +1628,7 @@ pub fn type_needs_unwind_cleanup(cx: ctxt, ty: t) -> bool {
}
fn type_needs_unwind_cleanup_(cx: ctxt, ty: t,
tycache: &mut LinearSet<t>,
tycache: &mut HashSet<t>,
encountered_box: bool) -> bool {
// Prevent infinite recursion
@ -1855,14 +1855,14 @@ pub fn type_contents(cx: ctxt, ty: t) -> TypeContents {
None => {}
}
let mut cache = LinearMap::new();
let mut cache = HashMap::new();
let result = tc_ty(cx, ty, &mut cache);
cx.tc_cache.insert(ty_id, result);
return result;
fn tc_ty(cx: ctxt,
ty: t,
cache: &mut LinearMap<uint, TypeContents>) -> TypeContents
cache: &mut HashMap<uint, TypeContents>) -> TypeContents
{
// Subtle: Note that we are *not* using cx.tc_cache here but rather a
// private cache for this walk. This is needed in the case of cyclic
@ -2054,7 +2054,7 @@ pub fn type_contents(cx: ctxt, ty: t) -> TypeContents {
fn tc_mt(cx: ctxt,
mt: mt,
cache: &mut LinearMap<uint, TypeContents>) -> TypeContents
cache: &mut HashMap<uint, TypeContents>) -> TypeContents
{
let mc = if mt.mutbl == m_mutbl {TC_MUTABLE} else {TC_NONE};
mc + tc_ty(cx, mt.ty, cache)
@ -3258,7 +3258,7 @@ pub fn occurs_check(tcx: ctxt, sp: span, vid: TyVid, rt: t) {
// Maintains a little union-set tree for inferred modes. `canon()` returns
// the current head value for `m0`.
fn canon<T:Copy + cmp::Eq>(tbl: &mut LinearMap<ast::node_id, ast::inferable<T>>,
fn canon<T:Copy + cmp::Eq>(tbl: &mut HashMap<ast::node_id, ast::inferable<T>>,
+m0: ast::inferable<T>) -> ast::inferable<T> {
match m0 {
ast::infer(id) => {
@ -4286,7 +4286,7 @@ pub fn iter_bound_traits_and_supertraits(tcx: ctxt,
}
};
let mut supertrait_map = LinearMap::new();
let mut supertrait_map = HashMap::new();
let mut seen_def_ids = ~[];
let mut i = 0;
let trait_ty_id = ty_to_def_id(bound_trait_ty).expect(

View File

@ -18,7 +18,7 @@ use middle::typeck::check::{instantiate_path, lookup_def};
use middle::typeck::check::{structure_of, valid_range_bounds};
use middle::typeck::require_same_types;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::vec;
use syntax::ast;
use syntax::ast_util;
@ -228,7 +228,7 @@ pub fn check_pat_variant(pcx: pat_ctxt, pat: @ast::pat, path: @ast::path,
/// `class_fields` describes the type of each field of the struct.
/// `class_id` is the ID of the struct.
/// `substitutions` are the type substitutions applied to this struct type
/// (e.g. K,V in LinearMap<K,V>).
/// (e.g. K,V in HashMap<K,V>).
/// `etc` is true if the pattern said '...' and false otherwise.
pub fn check_struct_pat_fields(pcx: pat_ctxt,
span: span,
@ -241,13 +241,13 @@ pub fn check_struct_pat_fields(pcx: pat_ctxt,
let tcx = pcx.fcx.ccx.tcx;
// Index the class fields.
let mut field_map = LinearMap::new();
let mut field_map = HashMap::new();
for class_fields.eachi |i, class_field| {
field_map.insert(class_field.ident, i);
}
// Typecheck each field.
let mut found_fields = LinearSet::new();
let mut found_fields = HashSet::new();
for fields.each |field| {
match field_map.find(&field.ident) {
Some(&index) => {

View File

@ -95,7 +95,7 @@ use middle::typeck::{method_self, method_static, method_trait, method_super};
use util::common::indenter;
use util::ppaux::expr_repr;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use core::result;
use core::uint;
use core::vec;
@ -131,7 +131,7 @@ pub fn lookup(
check_traits: CheckTraitsFlag, // Whether we check traits only.
autoderef_receiver: AutoderefReceiverFlag)
-> Option<method_map_entry> {
let mut impl_dups = LinearSet::new();
let mut impl_dups = HashSet::new();
let lcx = LookupContext {
fcx: fcx,
expr: expr,
@ -159,7 +159,7 @@ pub struct LookupContext<'self> {
callee_id: node_id,
m_name: ast::ident,
supplied_tps: &'self [ty::t],
impl_dups: &'self mut LinearSet<def_id>,
impl_dups: &'self mut HashSet<def_id>,
inherent_candidates: @mut ~[Candidate],
extension_candidates: @mut ~[Candidate],
deref_args: check::DerefArgs,

View File

@ -110,7 +110,7 @@ use util::common::{block_query, indenter, loop_query};
use util::ppaux::{bound_region_to_str, expr_repr, pat_repr};
use util::ppaux;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::ptr;
use core::result::{Result, Ok, Err};
use core::result;
@ -158,12 +158,12 @@ pub struct SelfInfo {
/// share the inherited fields.
pub struct inherited {
infcx: @mut infer::InferCtxt,
locals: @mut LinearMap<ast::node_id, ty::t>,
locals: @mut HashMap<ast::node_id, ty::t>,
// Temporary tables:
node_types: @mut LinearMap<ast::node_id, ty::t>,
node_type_substs: @mut LinearMap<ast::node_id, ty::substs>,
adjustments: @mut LinearMap<ast::node_id, @ty::AutoAdjustment>,
node_types: @mut HashMap<ast::node_id, ty::t>,
node_type_substs: @mut HashMap<ast::node_id, ty::substs>,
adjustments: @mut HashMap<ast::node_id, @ty::AutoAdjustment>,
method_map: method_map,
vtable_map: vtable_map,
}
@ -220,12 +220,12 @@ pub struct FnCtxt {
pub fn blank_inherited(ccx: @mut CrateCtxt) -> @inherited {
@inherited {
infcx: infer::new_infer_ctxt(ccx.tcx),
locals: @mut LinearMap::new(),
node_types: @mut LinearMap::new(),
node_type_substs: @mut LinearMap::new(),
adjustments: @mut LinearMap::new(),
method_map: @mut LinearMap::new(),
vtable_map: @mut LinearMap::new(),
locals: @mut HashMap::new(),
node_types: @mut HashMap::new(),
node_type_substs: @mut HashMap::new(),
adjustments: @mut HashMap::new(),
method_map: @mut HashMap::new(),
vtable_map: @mut HashMap::new(),
}
}
@ -504,7 +504,7 @@ pub fn check_method(ccx: @mut CrateCtxt,
pub fn check_no_duplicate_fields(tcx: ty::ctxt,
fields: ~[(ast::ident, span)]) {
let mut field_names = LinearMap::new();
let mut field_names = HashMap::new();
for fields.each |p| {
let (id, sp) = *p;
@ -1761,7 +1761,7 @@ pub fn check_expr_with_unifier(fcx: @mut FnCtxt,
check_completeness: bool) {
let tcx = fcx.ccx.tcx;
let mut class_field_map = LinearMap::new();
let mut class_field_map = HashMap::new();
let mut fields_found = 0;
for field_types.each |field| {
// XXX: Check visibility here.

View File

@ -28,7 +28,7 @@ use core::result::{Ok, Err};
use core::result;
use core::uint;
use core::vec;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use syntax::ast;
use syntax::ast_util;
use syntax::codemap::span;
@ -234,7 +234,7 @@ pub fn lookup_vtable(vcx: &VtableContext,
_ => {
let mut found = ~[];
let mut impls_seen = LinearSet::new();
let mut impls_seen = HashSet::new();
match vcx.ccx.coherence_info.extension_methods.find(&trait_id) {
None => {

View File

@ -53,7 +53,7 @@ use syntax::visit::{visit_mod};
use util::ppaux::ty_to_str;
use core::result::Ok;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::uint;
pub struct UniversalQuantificationResult {
@ -164,17 +164,17 @@ pub fn method_to_MethodInfo(ast_method: @method) -> @MethodInfo {
pub struct CoherenceInfo {
// Contains implementations of methods that are inherent to a type.
// Methods in these implementations don't need to be exported.
inherent_methods: @mut LinearMap<def_id, @mut ~[@Impl]>,
inherent_methods: @mut HashMap<def_id, @mut ~[@Impl]>,
// Contains implementations of methods associated with a trait. For these,
// the associated trait must be imported at the call site.
extension_methods: @mut LinearMap<def_id, @mut ~[@Impl]>,
extension_methods: @mut HashMap<def_id, @mut ~[@Impl]>,
}
pub fn CoherenceInfo() -> CoherenceInfo {
CoherenceInfo {
inherent_methods: @mut LinearMap::new(),
extension_methods: @mut LinearMap::new(),
inherent_methods: @mut HashMap::new(),
extension_methods: @mut HashMap::new(),
}
}
@ -183,7 +183,7 @@ pub fn CoherenceChecker(crate_context: @mut CrateCtxt) -> CoherenceChecker {
crate_context: crate_context,
inference_context: new_infer_ctxt(crate_context.tcx),
base_type_def_ids: @mut LinearMap::new(),
base_type_def_ids: @mut HashMap::new(),
}
}
@ -194,7 +194,7 @@ pub struct CoherenceChecker {
// A mapping from implementations to the corresponding base type
// definition ID.
base_type_def_ids: @mut LinearMap<def_id,def_id>,
base_type_def_ids: @mut HashMap<def_id,def_id>,
}
pub impl CoherenceChecker {
@ -471,7 +471,7 @@ pub impl CoherenceChecker {
ty_to_str(self.crate_context.tcx, self_t));
match self.crate_context.tcx.trait_impls.find(&trait_t) {
None => {
let m = @mut LinearMap::new();
let m = @mut HashMap::new();
m.insert(self_t, the_impl);
self.crate_context.tcx.trait_impls.insert(trait_t, m);
}
@ -501,7 +501,7 @@ pub impl CoherenceChecker {
f: &fn(x: &ty::method) -> bool) {
// Make a list of all the names of the provided methods.
// XXX: This is horrible.
let mut provided_method_idents = LinearSet::new();
let mut provided_method_idents = HashSet::new();
let tcx = self.crate_context.tcx;
for ty::provided_trait_methods(tcx, trait_did).each |ident| {
provided_method_idents.insert(*ident);
@ -705,7 +705,7 @@ pub impl CoherenceChecker {
let tcx = self.crate_context.tcx;
let mut provided_names = LinearSet::new();
let mut provided_names = HashSet::new();
// Implemented methods
for uint::range(0, all_methods.len()) |i| {
provided_names.insert(all_methods[i].ident);
@ -812,7 +812,7 @@ pub impl CoherenceChecker {
// External crate handling
fn add_impls_for_module(&self, impls_seen: &mut LinearSet<def_id>,
fn add_impls_for_module(&self, impls_seen: &mut HashSet<def_id>,
crate_store: @mut CStore,
module_def_id: def_id) {
let implementations = get_impls_for_mod(crate_store,
@ -931,7 +931,7 @@ pub impl CoherenceChecker {
// Adds implementations and traits from external crates to the coherence
// info.
fn add_external_crates(&self) {
let mut impls_seen = LinearSet::new();
let mut impls_seen = HashSet::new();
let crate_store = self.crate_context.tcx.sess.cstore;
do iter_crate_data(crate_store) |crate_number, _crate_metadata| {

View File

@ -548,7 +548,7 @@ use util::common::indenter;
use util::ppaux::note_and_explain_region;
use core::cell::{Cell, empty_cell};
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::result::{Err, Ok};
use core::to_bytes;
use core::uint;
@ -600,12 +600,12 @@ enum CombineMapType {
Lub, Glb
}
type CombineMap = LinearMap<TwoRegions, RegionVid>;
type CombineMap = HashMap<TwoRegions, RegionVid>;
pub struct RegionVarBindings {
tcx: ty::ctxt,
var_spans: ~[span],
constraints: LinearMap<Constraint, span>,
constraints: HashMap<Constraint, span>,
lubs: CombineMap,
glbs: CombineMap,
skolemization_count: uint,
@ -632,9 +632,9 @@ pub fn RegionVarBindings(tcx: ty::ctxt) -> RegionVarBindings {
tcx: tcx,
var_spans: ~[],
values: empty_cell(),
constraints: LinearMap::new(),
lubs: LinearMap::new(),
glbs: LinearMap::new(),
constraints: HashMap::new(),
lubs: HashMap::new(),
glbs: HashMap::new(),
skolemization_count: 0,
bound_count: 0,
undo_log: ~[]
@ -1194,7 +1194,7 @@ struct SpannedRegion {
span: span,
}
type TwoRegionsMap = LinearSet<TwoRegions>;
type TwoRegionsMap = HashSet<TwoRegions>;
pub impl RegionVarBindings {
fn infer_variable_values(&mut self) -> ~[GraphNodeValue] {
@ -1423,7 +1423,7 @@ pub impl RegionVarBindings {
&mut self,
graph: &Graph) -> ~[GraphNodeValue]
{
let mut dup_map = LinearSet::new();
let mut dup_map = HashSet::new();
graph.nodes.mapi(|idx, node| {
match node.value {
Value(_) => {
@ -1598,7 +1598,7 @@ pub impl RegionVarBindings {
orig_node_idx: RegionVid,
dir: Direction)
-> ~[SpannedRegion] {
let mut set = LinearSet::new();
let mut set = HashSet::new();
let mut stack = ~[orig_node_idx];
set.insert(orig_node_idx.to_uint());
let mut result = ~[];

View File

@ -55,7 +55,7 @@ use middle::ty;
use util::common::time;
use util::ppaux;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::result;
use core::vec;
use std::list::List;
@ -129,7 +129,7 @@ pub struct method_map_entry {
// maps from an expression id that corresponds to a method call to the details
// of the method to be invoked
pub type method_map = @mut LinearMap<ast::node_id, method_map_entry>;
pub type method_map = @mut HashMap<ast::node_id, method_map_entry>;
// Resolutions for bounds of all parameters, left to right, for a given path.
pub type vtable_res = @~[vtable_origin];
@ -170,7 +170,7 @@ pub impl vtable_origin {
}
}
pub type vtable_map = @mut LinearMap<ast::node_id, vtable_res>;
pub type vtable_map = @mut HashMap<ast::node_id, vtable_res>;
pub struct CrateCtxt {
// A mapping from method call sites to traits that have that method.
@ -342,8 +342,8 @@ pub fn check_crate(tcx: ty::ctxt,
let time_passes = tcx.sess.time_passes();
let ccx = @mut CrateCtxt {
trait_map: trait_map,
method_map: @mut LinearMap::new(),
vtable_map: @mut LinearMap::new(),
method_map: @mut HashMap::new(),
vtable_map: @mut HashMap::new(),
coherence_info: @coherence::CoherenceInfo(),
tcx: tcx
};

View File

@ -14,7 +14,7 @@ use syntax::ast;
use syntax::codemap::{span};
use syntax::visit;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use core::str;
use std;
@ -114,7 +114,7 @@ pub fn pluralize(n: uint, +s: ~str) -> ~str {
}
// A set of node IDs (used to keep track of which node IDs are for statements)
pub type stmt_set = @mut LinearSet<ast::node_id>;
pub type stmt_set = @mut HashSet<ast::node_id>;
//
// Local Variables:

View File

@ -28,7 +28,7 @@ extern mod syntax(vers = "0.6");
use core::*;
use core::container::Map;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::io::WriterUtil;
use rustc::driver::{driver, session};
use rustc::metadata::filesearch;
@ -253,7 +253,7 @@ impl PackageScript {
struct Ctx {
cfgs: ~[~str],
json: bool,
dep_cache: @mut LinearMap<~str, bool>
dep_cache: @mut HashMap<~str, bool>
}
impl Ctx {
@ -483,14 +483,14 @@ impl Ctx {
if self.json {
match PackageScript::parse(&os::getcwd()) {
result::Ok(script) => {
let mut map = ~LinearMap::new();
let mut map = ~HashMap::new();
map.insert(~"id", json::String(script.id));
map.insert(~"name", json::String(script.name));
map.insert(~"vers", json::String(script.vers.to_str()));
map.insert(~"deps", json::List(do script.deps.map |&dep| {
let (url, target) = dep;
let mut inner = ~LinearMap::new();
let mut inner = ~HashMap::new();
inner.insert(~"url", json::String(url));
@ -921,7 +921,7 @@ pub fn main() {
Ctx {
cfgs: cfgs,
json: json,
dep_cache: @mut LinearMap::new()
dep_cache: @mut HashMap::new()
}.run(cmd, args);
}

View File

@ -10,7 +10,7 @@
use core::*;
use core::hash::Streaming;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use rustc::driver::{driver, session};
use rustc::metadata::filesearch;
use std::getopts::groups::getopts;
@ -337,7 +337,7 @@ fn _add_pkg(packages: ~[json::Json], pkg: &Package) -> ~[json::Json] {
}
}
let mut map = ~LinearMap::new();
let mut map = ~HashMap::new();
map.insert(~"id", json::String(pkg.id));
map.insert(~"vers", json::String(pkg.vers.to_str()));

View File

@ -16,7 +16,7 @@
use core::prelude::*;
use core::io::{WriterUtil, ReaderUtil};
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use serialize::Encodable;
use serialize;
@ -33,7 +33,7 @@ pub enum Json {
}
pub type List = ~[Json];
pub type Object = LinearMap<~str, Json>;
pub type Object = HashMap<~str, Json>;
#[deriving(Eq)]
pub struct Error {
@ -677,7 +677,7 @@ priv impl Parser {
self.bump();
self.parse_whitespace();
let mut values = ~LinearMap::new();
let mut values = ~HashMap::new();
if self.ch == '}' {
self.bump();
@ -1127,9 +1127,9 @@ impl<A:ToJson> ToJson for ~[A] {
fn to_json(&self) -> Json { List(self.map(|elt| elt.to_json())) }
}
impl<A:ToJson + Copy> ToJson for LinearMap<~str, A> {
impl<A:ToJson + Copy> ToJson for HashMap<~str, A> {
fn to_json(&self) -> Json {
let mut d = LinearMap::new();
let mut d = HashMap::new();
for self.each |&(key, value)| {
d.insert(copy *key, value.to_json());
}
@ -1161,7 +1161,7 @@ mod tests {
use super::*;
use core::prelude::*;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use std::serialize::Decodable;
@ -1190,7 +1190,7 @@ mod tests {
}
fn mk_object(items: &[(~str, Json)]) -> Json {
let mut d = ~LinearMap::new();
let mut d = ~HashMap::new();
for items.each |item| {
match *item {
@ -1755,7 +1755,7 @@ mod tests {
fn test_decode_map() {
let s = ~"{\"a\": \"Dog\", \"b\": [\"Frog\", \"Henry\", 349]}";
let decoder = Decoder(from_str(s).unwrap());
let mut map: LinearMap<~str, Animal> = Decodable::decode(&decoder);
let mut map: HashMap<~str, Animal> = Decodable::decode(&decoder);
assert_eq!(map.pop(&~"a"), Some(Dog));
assert_eq!(map.pop(&~"b"), Some(Frog(~"Henry", 349)));

View File

@ -17,7 +17,7 @@ use core::from_str::FromStr;
use core::io::{Reader, ReaderUtil};
use core::io;
use core::prelude::*;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::str;
use core::to_bytes::IterBytes;
use core::to_bytes;
@ -212,7 +212,7 @@ fn encode_plus(s: &str) -> ~str {
/**
* Encode a hashmap to the 'application/x-www-form-urlencoded' media type.
*/
pub fn encode_form_urlencoded(m: &LinearMap<~str, ~[~str]>) -> ~str {
pub fn encode_form_urlencoded(m: &HashMap<~str, ~[~str]>) -> ~str {
let mut out = ~"";
let mut first = true;
@ -238,9 +238,9 @@ pub fn encode_form_urlencoded(m: &LinearMap<~str, ~[~str]>) -> ~str {
* Decode a string encoded with the 'application/x-www-form-urlencoded' media
* type into a hashmap.
*/
pub fn decode_form_urlencoded(s: &[u8]) -> LinearMap<~str, ~[~str]> {
pub fn decode_form_urlencoded(s: &[u8]) -> HashMap<~str, ~[~str]> {
do io::with_bytes_reader(s) |rdr| {
let mut m = LinearMap::new();
let mut m = HashMap::new();
let mut key = ~"";
let mut value = ~"";
let mut parsing_key = true;
@ -818,7 +818,7 @@ mod tests {
use net_url::*;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
#[test]
pub fn test_url_parse() {
@ -1053,18 +1053,18 @@ mod tests {
#[test]
pub fn test_encode_form_urlencoded() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
assert!(encode_form_urlencoded(&m) == ~"");
m.insert(~"", ~[]);
m.insert(~"foo", ~[]);
assert!(encode_form_urlencoded(&m) == ~"");
let mut m = LinearMap::new();
let mut m = HashMap::new();
m.insert(~"foo", ~[~"bar", ~"123"]);
assert!(encode_form_urlencoded(&m) == ~"foo=bar&foo=123");
let mut m = LinearMap::new();
let mut m = HashMap::new();
m.insert(~"foo bar", ~[~"abc", ~"12 = 34"]);
assert!(encode_form_urlencoded(&m) ==
~"foo+bar=abc&foo+bar=12+%3D+34");

View File

@ -17,7 +17,7 @@ Core encoding and decoding interfaces.
#[forbid(non_camel_case_types)];
use core::prelude::*;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::trie::{TrieMap, TrieSet};
use deque::Deque;
use dlist::DList;
@ -591,7 +591,7 @@ impl<
E: Encoder,
K: Encodable<E> + Hash + IterBytes + Eq,
V: Encodable<E>
> Encodable<E> for LinearMap<K, V> {
> Encodable<E> for HashMap<K, V> {
fn encode(&self, e: &E) {
do e.emit_map(self.len()) {
let mut i = 0;
@ -608,10 +608,10 @@ impl<
D: Decoder,
K: Decodable<D> + Hash + IterBytes + Eq,
V: Decodable<D>
> Decodable<D> for LinearMap<K, V> {
fn decode(d: &D) -> LinearMap<K, V> {
> Decodable<D> for HashMap<K, V> {
fn decode(d: &D) -> HashMap<K, V> {
do d.read_map |len| {
let mut map = LinearMap::with_capacity(len);
let mut map = HashMap::with_capacity(len);
for uint::range(0, len) |i| {
let key = d.read_map_elt_key(i, || Decodable::decode(d));
let val = d.read_map_elt_val(i, || Decodable::decode(d));
@ -625,7 +625,7 @@ impl<
impl<
S: Encoder,
T: Encodable<S> + Hash + IterBytes + Eq
> Encodable<S> for LinearSet<T> {
> Encodable<S> for HashSet<T> {
fn encode(&self, s: &S) {
do s.emit_seq(self.len()) {
let mut i = 0;
@ -640,10 +640,10 @@ impl<
impl<
D: Decoder,
T: Decodable<D> + Hash + IterBytes + Eq
> Decodable<D> for LinearSet<T> {
fn decode(d: &D) -> LinearSet<T> {
> Decodable<D> for HashSet<T> {
fn decode(d: &D) -> HashSet<T> {
do d.read_seq |len| {
let mut set = LinearSet::with_capacity(len);
let mut set = HashSet::with_capacity(len);
for uint::range(0, len) |i| {
set.insert(d.read_seq_elt(i, || Decodable::decode(d)));
}

View File

@ -24,7 +24,7 @@ use core::pipes::recv;
use core::prelude::*;
use core::result;
use core::run;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::task;
use core::to_bytes;
@ -136,10 +136,10 @@ pub impl WorkKey {
}
}
struct WorkMap(LinearMap<WorkKey, ~str>);
struct WorkMap(HashMap<WorkKey, ~str>);
impl WorkMap {
fn new() -> WorkMap { WorkMap(LinearMap::new()) }
fn new() -> WorkMap { WorkMap(HashMap::new()) }
}
impl<S:Encoder> Encodable<S> for WorkMap {
@ -166,7 +166,7 @@ impl<D:Decoder> Decodable<D> for WorkMap {
struct Database {
db_filename: Path,
db_cache: LinearMap<~str, ~str>,
db_cache: HashMap<~str, ~str>,
db_dirty: bool
}
@ -212,7 +212,7 @@ struct Context {
db: @mut Database,
logger: @mut Logger,
cfg: @json::Object,
freshness: LinearMap<~str,@fn(&str,&str)->bool>
freshness: HashMap<~str,@fn(&str,&str)->bool>
}
struct Prep {
@ -267,7 +267,7 @@ pub impl Context {
db: db,
logger: lg,
cfg: cfg,
freshness: LinearMap::new()
freshness: HashMap::new()
}
}
@ -411,10 +411,10 @@ fn test() {
use core::io::WriterUtil;
let db = @mut Database { db_filename: Path("db.json"),
db_cache: LinearMap::new(),
db_cache: HashMap::new(),
db_dirty: false };
let lg = @mut Logger { a: () };
let cfg = @LinearMap::new();
let cfg = @HashMap::new();
let cx = @Context::new(db, lg, cfg);
let w:Work<~str> = do cx.prep("test1") |prep| {
let pth = Path("foo.c");

View File

@ -23,7 +23,7 @@ use print::pprust;
use visit;
use core::cmp;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::str;
use core::vec;
@ -104,7 +104,7 @@ pub enum ast_node {
node_struct_ctor(@struct_def, @item, @path),
}
pub type map = @mut LinearMap<node_id, ast_node>;
pub type map = @mut HashMap<node_id, ast_node>;
pub struct Ctx {
map: map,
@ -134,7 +134,7 @@ pub fn mk_ast_map_visitor() -> vt {
pub fn map_crate(diag: @span_handler, c: crate) -> map {
let cx = @mut Ctx {
map: @mut LinearMap::new(),
map: @mut HashMap::new(),
path: ~[],
local_id: 0u,
diag: diag,

View File

@ -20,7 +20,7 @@ use diagnostic::span_handler;
use parse::comments::{doc_comment_style, strip_doc_comment_decoration};
use core::vec;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use std;
/* Constructors */
@ -333,7 +333,7 @@ pub fn find_inline_attr(attrs: &[ast::attribute]) -> inline_attr {
pub fn require_unique_names(diagnostic: @span_handler,
metas: &[@ast::meta_item]) {
let mut set = LinearSet::new();
let mut set = HashSet::new();
for metas.each |meta| {
let name = get_meta_item_name(*meta);

View File

@ -20,7 +20,7 @@ use parse;
use parse::token;
use core::vec;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
// new-style macro! tt code:
//
@ -125,7 +125,7 @@ pub fn syntax_expander_table() -> SyntaxEnv {
fn builtin_item_tt(f: SyntaxExpanderTTItemFun) -> @Transformer {
@SE(IdentTT(SyntaxExpanderTTItem{expander: f, span: None}))
}
let mut syntax_expanders = LinearMap::new();
let mut syntax_expanders = HashMap::new();
// NB identifier starts with space, and can't conflict with legal idents
syntax_expanders.insert(@~" block",
@ScopeMacros(true));
@ -430,8 +430,8 @@ pub fn get_exprs_from_tts(cx: @ext_ctxt, tts: &[ast::token_tree])
// a transformer env is either a base map or a map on top
// of another chain.
pub enum MapChain<K,V> {
BaseMapChain(~LinearMap<K,@V>),
ConsMapChain(~LinearMap<K,@V>,@mut MapChain<K,V>)
BaseMapChain(~HashMap<K,@V>),
ConsMapChain(~HashMap<K,@V>,@mut MapChain<K,V>)
}
@ -439,13 +439,13 @@ pub enum MapChain<K,V> {
impl <K: Eq + Hash + IterBytes ,V: Copy> MapChain<K,V>{
// Constructor. I don't think we need a zero-arg one.
fn new(+init: ~LinearMap<K,@V>) -> @mut MapChain<K,V> {
fn new(+init: ~HashMap<K,@V>) -> @mut MapChain<K,V> {
@mut BaseMapChain(init)
}
// add a new frame to the environment (functionally)
fn push_frame (@mut self) -> @mut MapChain<K,V> {
@mut ConsMapChain(~LinearMap::new() ,self)
@mut ConsMapChain(~HashMap::new() ,self)
}
// no need for pop, it'll just be functional.
@ -454,7 +454,7 @@ impl <K: Eq + Hash + IterBytes ,V: Copy> MapChain<K,V>{
// ugh: can't get this to compile with mut because of the
// lack of flow sensitivity.
fn get_map(&self) -> &'self LinearMap<K,@V> {
fn get_map(&self) -> &'self HashMap<K,@V> {
match *self {
BaseMapChain (~ref map) => map,
ConsMapChain (~ref map,_) => map
@ -509,10 +509,10 @@ impl <K: Eq + Hash + IterBytes ,V: Copy> MapChain<K,V>{
#[cfg(test)]
mod test {
use super::MapChain;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
#[test] fn testenv () {
let mut a = LinearMap::new();
let mut a = HashMap::new();
a.insert (@~"abc",@15);
let m = MapChain::new(~a);
m.insert (@~"def",@16);

View File

@ -20,7 +20,7 @@ use parse::token::{Token, EOF, to_str, nonterminal};
use parse::token;
use core::prelude::*;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
/* This is an Earley-like parser, without support for in-grammar nonterminals,
only by calling out to the main rust parser for named nonterminals (which it
@ -186,9 +186,9 @@ pub enum named_match {
pub type earley_item = ~MatcherPos;
pub fn nameize(p_s: @mut ParseSess, ms: ~[matcher], res: ~[@named_match])
-> LinearMap<ident,@named_match> {
-> HashMap<ident,@named_match> {
fn n_rec(p_s: @mut ParseSess, m: matcher, res: ~[@named_match],
ret_val: &mut LinearMap<ident, @named_match>) {
ret_val: &mut HashMap<ident, @named_match>) {
match m {
codemap::spanned {node: match_tok(_), _} => (),
codemap::spanned {node: match_seq(ref more_ms, _, _, _, _), _} => {
@ -207,13 +207,13 @@ pub fn nameize(p_s: @mut ParseSess, ms: ~[matcher], res: ~[@named_match])
}
}
}
let mut ret_val = LinearMap::new();
let mut ret_val = HashMap::new();
for ms.each() |m| { n_rec(p_s, *m, res, &mut ret_val) }
return ret_val;
}
pub enum parse_result {
success(LinearMap<ident, @named_match>),
success(HashMap<ident, @named_match>),
failure(codemap::span, ~str),
error(codemap::span, ~str)
}
@ -223,7 +223,7 @@ pub fn parse_or_else(
+cfg: ast::crate_cfg,
rdr: @reader,
ms: ~[matcher]
) -> LinearMap<ident, @named_match> {
) -> HashMap<ident, @named_match> {
match parse(sess, cfg, rdr, ms) {
success(m) => m,
failure(sp, str) => sess.span_diagnostic.span_fatal(sp, str),

View File

@ -18,7 +18,7 @@ use ext::tt::macro_parser::{named_match, matched_seq, matched_nonterminal};
use parse::token::{EOF, INTERPOLATED, IDENT, Token, nt_ident, ident_interner};
use parse::lexer::TokenAndSpan;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::option;
use core::vec;
@ -39,7 +39,7 @@ pub struct TtReader {
// the unzipped tree:
cur: @mut TtFrame,
/* for MBE-style macro transcription */
interpolations: LinearMap<ident, @named_match>,
interpolations: HashMap<ident, @named_match>,
repeat_idx: ~[uint],
repeat_len: ~[uint],
/* cached: */
@ -52,7 +52,7 @@ pub struct TtReader {
* should) be none. */
pub fn new_tt_reader(sp_diag: @span_handler,
itr: @ident_interner,
interp: Option<LinearMap<ident,@named_match>>,
interp: Option<HashMap<ident,@named_match>>,
+src: ~[ast::token_tree])
-> @mut TtReader {
let r = @mut TtReader {
@ -66,7 +66,7 @@ pub fn new_tt_reader(sp_diag: @span_handler,
up: option::None
},
interpolations: match interp { /* just a convienience */
None => LinearMap::new(),
None => HashMap::new(),
Some(x) => x
},
repeat_idx: ~[],

View File

@ -94,7 +94,7 @@ use opt_vec::OptVec;
use core::either::Either;
use core::either;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use core::vec;
#[deriving(Eq)]
@ -243,7 +243,7 @@ pub fn Parser(sess: @mut ParseSess,
keywords: token::keyword_table(),
strict_keywords: token::strict_keyword_table(),
reserved_keywords: token::reserved_keyword_table(),
obsolete_set: @mut LinearSet::new(),
obsolete_set: @mut HashSet::new(),
mod_path_stack: @mut ~[],
}
}
@ -262,12 +262,12 @@ pub struct Parser {
quote_depth: @mut uint, // not (yet) related to the quasiquoter
reader: @reader,
interner: @token::ident_interner,
keywords: LinearSet<~str>,
strict_keywords: LinearSet<~str>,
reserved_keywords: LinearSet<~str>,
keywords: HashSet<~str>,
strict_keywords: HashSet<~str>,
reserved_keywords: HashSet<~str>,
/// The set of seen errors about obsolete syntax. Used to suppress
/// extra detail when the same error is seen twice
obsolete_set: @mut LinearSet<ObsoleteSyntax>,
obsolete_set: @mut HashSet<ObsoleteSyntax>,
/// Used to determine the path to externally loaded source files
mod_path_stack: @mut ~[~str],

View File

@ -18,7 +18,7 @@ use util::interner;
use core::cast;
use core::char;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use core::str;
use core::task;
@ -458,8 +458,8 @@ pub fn mk_fake_ident_interner() -> @ident_interner {
* appear as identifiers at all. Reserved keywords are not used anywhere in
* the language and may not appear as identifiers.
*/
pub fn keyword_table() -> LinearSet<~str> {
let mut keywords = LinearSet::new();
pub fn keyword_table() -> HashSet<~str> {
let mut keywords = HashSet::new();
let mut tmp = temporary_keyword_table();
let mut strict = strict_keyword_table();
let mut reserved = reserved_keyword_table();
@ -471,8 +471,8 @@ pub fn keyword_table() -> LinearSet<~str> {
}
/// Keywords that may be used as identifiers
pub fn temporary_keyword_table() -> LinearSet<~str> {
let mut words = LinearSet::new();
pub fn temporary_keyword_table() -> HashSet<~str> {
let mut words = HashSet::new();
let keys = ~[
~"self", ~"static",
];
@ -483,8 +483,8 @@ pub fn temporary_keyword_table() -> LinearSet<~str> {
}
/// Full keywords. May not appear anywhere else.
pub fn strict_keyword_table() -> LinearSet<~str> {
let mut words = LinearSet::new();
pub fn strict_keyword_table() -> HashSet<~str> {
let mut words = HashSet::new();
let keys = ~[
~"as",
~"break",
@ -509,8 +509,8 @@ pub fn strict_keyword_table() -> LinearSet<~str> {
return words;
}
pub fn reserved_keyword_table() -> LinearSet<~str> {
let mut words = LinearSet::new();
pub fn reserved_keyword_table() -> HashSet<~str> {
let mut words = HashSet::new();
let keys = ~[
~"be"
];

View File

@ -13,10 +13,10 @@
// type, and vice versa.
use core::prelude::*;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
pub struct Interner<T> {
priv map: @mut LinearMap<T, uint>,
priv map: @mut HashMap<T, uint>,
priv vect: @mut ~[T],
}
@ -24,7 +24,7 @@ pub struct Interner<T> {
pub impl<T:Eq + IterBytes + Hash + Const + Copy> Interner<T> {
fn new() -> Interner<T> {
Interner {
map: @mut LinearMap::new(),
map: @mut HashMap::new(),
vect: @mut ~[],
}
}

View File

@ -13,9 +13,9 @@
extern mod std;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
pub type header_map = LinearMap<~str, @mut ~[@~str]>;
pub type header_map = HashMap<~str, @mut ~[@~str]>;
// the unused ty param is necessary so this gets monomorphized
pub fn request<T:Copy>(req: &header_map) {

View File

@ -13,7 +13,7 @@ extern mod std;
use core::io;
use std::time;
use std::treemap::TreeMap;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::trie::TrieMap;
fn timed(label: &str, f: &fn()) {
@ -102,7 +102,7 @@ fn main() {
{
let rng = core::rand::seeded_rng([1, 1, 1, 1, 1, 1, 1]);
let mut set = LinearSet::new();
let mut set = HashSet::new();
while set.len() != n_keys {
let next = rng.next() as uint;
if set.insert(next) {
@ -131,21 +131,21 @@ fn main() {
vector(&mut map, n_keys, rand);
}
io::println("\nLinearMap:");
io::println("\nHashMap:");
{
let mut map = LinearMap::new::<uint, uint>();
let mut map = HashMap::new::<uint, uint>();
ascending(&mut map, n_keys);
}
{
let mut map = LinearMap::new::<uint, uint>();
let mut map = HashMap::new::<uint, uint>();
descending(&mut map, n_keys);
}
{
io::println(" Random integers:");
let mut map = LinearMap::new::<uint, uint>();
let mut map = HashMap::new::<uint, uint>();
vector(&mut map, n_keys, rand);
}

View File

@ -9,7 +9,7 @@
// except according to those terms.
extern mod std;
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
use std::bitv::BitvSet;
use std::treemap::TreeSet;
use core::io::WriterUtil;
@ -158,9 +158,9 @@ fn main() {
{
let rng = rand::seeded_rng(seed);
let mut results = empty_results();
results.bench_int(rng, num_keys, max, || LinearSet::new::<uint>());
results.bench_str(rng, num_keys, || LinearSet::new::<~str>());
write_results("core::hashmap::LinearSet", &results);
results.bench_int(rng, num_keys, max, || HashSet::new::<uint>());
results.bench_str(rng, num_keys, || HashSet::new::<~str>());
write_results("core::hashmap::HashSet", &results);
}
{

View File

@ -24,7 +24,7 @@ use std::arc;
use std::time;
use std::deque::Deque;
use std::par;
use core::hashmap::{LinearMap, LinearSet};
use core::hashmap::{HashMap, HashSet};
use core::io::WriterUtil;
use core::int::abs;
use core::rand::RngUtil;
@ -81,7 +81,7 @@ fn make_edges(scale: uint, edgefactor: uint) -> ~[(node_id, node_id)] {
fn make_graph(N: uint, edges: ~[(node_id, node_id)]) -> graph {
let mut graph = do vec::from_fn(N) |_i| {
LinearSet::new()
HashSet::new()
};
do vec::each(edges) |e| {
@ -104,7 +104,7 @@ fn make_graph(N: uint, edges: ~[(node_id, node_id)]) -> graph {
}
fn gen_search_keys(graph: &[~[node_id]], n: uint) -> ~[node_id] {
let mut keys = LinearSet::new();
let mut keys = HashSet::new();
let r = rand::Rng();
while keys.len() < n {

View File

@ -15,13 +15,13 @@
extern mod std;
use std::sort;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::io::ReaderUtil;
use core::comm::{stream, Port, Chan};
use core::cmp::Ord;
// given a map, print a sorted version of it
fn sort_and_fmt(mm: &LinearMap<~[u8], uint>, total: uint) -> ~str {
fn sort_and_fmt(mm: &HashMap<~[u8], uint>, total: uint) -> ~str {
fn pct(xx: uint, yy: uint) -> float {
return (xx as float) * 100f / (yy as float);
}
@ -67,7 +67,7 @@ fn sort_and_fmt(mm: &LinearMap<~[u8], uint>, total: uint) -> ~str {
}
// given a map, search for the frequency of a pattern
fn find(mm: &LinearMap<~[u8], uint>, key: ~str) -> uint {
fn find(mm: &HashMap<~[u8], uint>, key: ~str) -> uint {
match mm.find(&str::to_bytes(str::to_lower(key))) {
option::None => { return 0u; }
option::Some(&num) => { return num; }
@ -75,7 +75,7 @@ fn find(mm: &LinearMap<~[u8], uint>, key: ~str) -> uint {
}
// given a map, increment the counter for a key
fn update_freq(mm: &mut LinearMap<~[u8], uint>, key: &[u8]) {
fn update_freq(mm: &mut HashMap<~[u8], uint>, key: &[u8]) {
let key = vec::slice(key, 0, key.len()).to_vec();
let newval = match mm.pop(&key) {
Some(v) => v + 1,
@ -103,7 +103,7 @@ fn windows_with_carry(bb: &[u8], nn: uint,
fn make_sequence_processor(sz: uint, from_parent: comm::Port<~[u8]>,
to_parent: comm::Chan<~str>) {
let mut freqs: LinearMap<~[u8], uint> = LinearMap::new();
let mut freqs: HashMap<~[u8], uint> = HashMap::new();
let mut carry: ~[u8] = ~[];
let mut total: uint = 0u;

View File

@ -25,7 +25,7 @@
// writes pbm image to output path
use core::io::WriterUtil;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
struct cmplx {
re: f64,
@ -125,7 +125,7 @@ fn writer(path: ~str, pport: comm::Port<Line>, size: uint)
};
cout.write_line("P4");
cout.write_line(fmt!("%u %u", size, size));
let mut lines: LinearMap<uint, Line> = LinearMap::new();
let mut lines: HashMap<uint, Line> = HashMap::new();
let mut done = 0_u;
let mut i = 0_u;
while i < size {

View File

@ -10,11 +10,11 @@
//buggy.rs
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
fn main() {
let mut buggy_map :LinearMap<uint, &uint> =
LinearMap::new::<uint, &uint>();
let mut buggy_map :HashMap<uint, &uint> =
HashMap::new::<uint, &uint>();
buggy_map.insert(42, &*~1); //~ ERROR illegal borrow
// but it is ok if we use a temporary

View File

@ -8,10 +8,10 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use core::hashmap::LinearSet;
use core::hashmap::HashSet;
struct Foo {
n: LinearSet<int>,
n: HashSet<int>,
}
pub impl Foo {
@ -29,6 +29,6 @@ fn bar(f: &mut Foo) {
}
fn main() {
let mut f = Foo { n: LinearSet::new() };
let mut f = Foo { n: HashSet::new() };
bar(&mut f);
}

View File

@ -11,10 +11,10 @@
// error-pattern: mismatched types
extern mod std;
use std::bitv;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
struct FnInfo {
vars: LinearMap<uint, VarInfo>
vars: HashMap<uint, VarInfo>
}
struct VarInfo {

View File

@ -9,12 +9,12 @@
// except according to those terms.
use core::container::Map;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
// Test that trait types printed in error msgs include the type arguments.
fn main() {
let x: @Map<~str, ~str> = @LinearMap::new::<~str, ~str>() as
let x: @Map<~str, ~str> = @HashMap::new::<~str, ~str>() as
@Map<~str, ~str>;
let y: @Map<uint, ~str> = @x;
//~^ ERROR mismatched types: expected `@core::container::Map<uint,~str>`

View File

@ -14,7 +14,7 @@
fn main() {
let count = @mut 0u;
let mut map = core::hashmap::LinearMap::new();
let mut map = core::hashmap::HashMap::new();
let mut arr = ~[];
for uint::range(0u, 10u) |i| {
arr += ~[@~"key stuff"];

View File

@ -20,17 +20,17 @@ type EqFn<K> = ~fn(K, K) -> bool;
struct LM { resize_at: uint, size: uint }
enum LinearMap<K,V> {
LinearMap_(LM)
enum HashMap<K,V> {
HashMap_(LM)
}
fn linear_map<K,V>() -> LinearMap<K,V> {
LinearMap_(LM{
fn linear_map<K,V>() -> HashMap<K,V> {
HashMap_(LM{
resize_at: 32,
size: 0})
}
pub impl<K,V> LinearMap<K,V> {
pub impl<K,V> HashMap<K,V> {
fn len(&mut self) -> uint {
self.size
}

View File

@ -19,7 +19,7 @@
pub fn map(filename: ~str, emit: map_reduce::putter) { emit(filename, ~"1"); }
mod map_reduce {
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use core::comm::*;
pub type putter = @fn(~str, ~str);
@ -37,9 +37,9 @@ mod map_reduce {
}
fn map_task(ctrl: SharedChan<ctrl_proto>, input: ~str) {
let intermediates = @mut LinearMap::new();
let intermediates = @mut HashMap::new();
fn emit(im: &mut LinearMap<~str, int>, ctrl: SharedChan<ctrl_proto>, key: ~str,
fn emit(im: &mut HashMap<~str, int>, ctrl: SharedChan<ctrl_proto>, key: ~str,
_val: ~str) {
if im.contains_key(&key) {
return;
@ -65,9 +65,9 @@ mod map_reduce {
// This task becomes the master control task. It spawns others
// to do the rest.
let mut reducers: LinearMap<~str, int>;
let mut reducers: HashMap<~str, int>;
reducers = LinearMap::new();
reducers = HashMap::new();
start_mappers(ctrl_chan, inputs.clone());

View File

@ -10,10 +10,10 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
pub fn main() {
let mut m = LinearMap::new();
let mut m = HashMap::new();
m.insert(str::to_bytes(~"foo"), str::to_bytes(~"bar"));
error!(m);
}

View File

@ -14,11 +14,11 @@
extern mod req;
use req::*;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
pub fn main() {
let v = ~[@~"hi"];
let mut m: req::header_map = LinearMap::new();
let mut m: req::header_map = HashMap::new();
m.insert(~"METHOD", @mut v);
request::<int>(&m);
}

View File

@ -13,9 +13,9 @@
// Minimized version of issue-2804.rs. Both check that callee IDs don't
// clobber the previous node ID in a macro expr
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
fn add_interfaces(managed_ip: ~str, device: LinearMap<~str, int>) {
fn add_interfaces(managed_ip: ~str, device: HashMap<~str, int>) {
error!("%s, %?", managed_ip, device.get(&~"interfaces"));
}

View File

@ -11,7 +11,7 @@
// except according to those terms.
extern mod std;
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
use std::json;
enum object {
@ -58,7 +58,7 @@ fn add_interface(store: int, managed_ip: ~str, data: std::json::Json) -> (~str,
}
}
fn add_interfaces(store: int, managed_ip: ~str, device: LinearMap<~str, std::json::Json>) -> ~[(~str, object)]
fn add_interfaces(store: int, managed_ip: ~str, device: HashMap<~str, std::json::Json>) -> ~[(~str, object)]
{
match device.get(&~"interfaces")
{

View File

@ -10,10 +10,10 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
pub fn main() {
let mut buggy_map: LinearMap<uint, &uint> = LinearMap::new::<uint, &uint>();
let mut buggy_map: HashMap<uint, &uint> = HashMap::new::<uint, &uint>();
let x = ~1;
buggy_map.insert(42, &*x);
}

View File

@ -29,7 +29,7 @@ fn check_strs(actual: &str, expected: &str) -> bool
#[test]
fn tester()
{
let mut table = core::hashmap::LinearMap();
let mut table = core::hashmap::HashMap();
table.insert(@~"one", 1);
table.insert(@~"two", 2);
assert!(check_strs(table.to_str(), ~"xxx")); // not sure what expected should be

View File

@ -8,9 +8,9 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use core::hashmap::LinearMap;
use core::hashmap::HashMap;
pub fn main() {
let mut x = LinearMap::new();
let mut x = HashMap::new();
x.insert((@"abc", 0), 0);
}