about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2013-07-18 12:37:40 -0700
committerGraydon Hoare <graydon@mozilla.com>2013-07-23 15:23:02 -0700
commitfa8553e41735d94cab81dba68c284d81e3f23107 (patch)
treefddee3fe16b9ebbb2c60efa06c80a1b7cc12d9af
parent9e4ebdb9d612bc8d493f448386dbd99afb856818 (diff)
downloadrust-fa8553e41735d94cab81dba68c284d81e3f23107.tar.gz
rust-fa8553e41735d94cab81dba68c284d81e3f23107.zip
extra: switch json from hashmaps to treemaps
-rw-r--r--src/libextra/json.rs22
-rw-r--r--src/libextra/test.rs3
-rw-r--r--src/libextra/workcache.rs3
3 files changed, 13 insertions, 15 deletions
diff --git a/src/libextra/json.rs b/src/libextra/json.rs
index 5602964245f..6a7f0607dd6 100644
--- a/src/libextra/json.rs
+++ b/src/libextra/json.rs
@@ -41,7 +41,7 @@ pub enum Json {
 }
 
 pub type List = ~[Json];
-pub type Object = HashMap<~str, Json>;
+pub type Object = TreeMap<~str, Json>;
 
 #[deriving(Eq)]
 /// If an error occurs while parsing some JSON, this is the structure which is
@@ -809,7 +809,7 @@ impl<T : iterator::Iterator<char>> Parser<T> {
         self.bump();
         self.parse_whitespace();
 
-        let mut values = ~HashMap::new();
+        let mut values = ~TreeMap::new();
 
         if self.ch == '}' {
           self.bump();
@@ -1087,7 +1087,7 @@ impl serialize::Decoder for Decoder {
         let len = match self.stack.pop() {
             Object(obj) => {
                 let len = obj.len();
-                for obj.consume().advance |(key, value)| {
+                for obj.consume_iter().advance |(key, value)| {
                     self.stack.push(value);
                     self.stack.push(String(key));
                 }
@@ -1294,9 +1294,9 @@ impl<A:ToJson> ToJson for ~[A] {
     fn to_json(&self) -> Json { List(self.map(|elt| elt.to_json())) }
 }
 
-impl<A:ToJson> ToJson for HashMap<~str, A> {
+impl<A:ToJson> ToJson for TreeMap<~str, A> {
     fn to_json(&self) -> Json {
-        let mut d = HashMap::new();
+        let mut d = TreeMap::new();
         for self.iter().advance |(key, value)| {
             d.insert((*key).clone(), value.to_json());
         }
@@ -1304,9 +1304,9 @@ impl<A:ToJson> ToJson for HashMap<~str, A> {
     }
 }
 
-impl<A:ToJson> ToJson for TreeMap<~str, A> {
+impl<A:ToJson> ToJson for HashMap<~str, A> {
     fn to_json(&self) -> Json {
-        let mut d = HashMap::new();
+        let mut d = TreeMap::new();
         for self.iter().advance |(key, value)| {
             d.insert((*key).clone(), value.to_json());
         }
@@ -1338,11 +1338,11 @@ mod tests {
 
     use super::*;
 
-    use std::hashmap::HashMap;
     use std::io;
     use std::result;
 
-    use extra::serialize::Decodable;
+    use serialize::Decodable;
+    use treemap::TreeMap;
 
     #[deriving(Eq, Encodable, Decodable)]
     enum Animal {
@@ -1363,7 +1363,7 @@ mod tests {
     }
 
     fn mk_object(items: &[(~str, Json)]) -> Json {
-        let mut d = ~HashMap::new();
+        let mut d = ~TreeMap::new();
 
         for items.iter().advance |item| {
             match *item {
@@ -1954,7 +1954,7 @@ mod tests {
     fn test_decode_map() {
         let s = ~"{\"a\": \"Dog\", \"b\": [\"Frog\", \"Henry\", 349]}";
         let mut decoder = Decoder(from_str(s).unwrap());
-        let mut map: HashMap<~str, Animal> = Decodable::decode(&mut decoder);
+        let mut map: TreeMap<~str, Animal> = Decodable::decode(&mut decoder);
 
         assert_eq!(map.pop(&~"a"), Some(Dog));
         assert_eq!(map.pop(&~"b"), Some(Frog(~"Henry", 349)));
diff --git a/src/libextra/test.rs b/src/libextra/test.rs
index 910c95eb8f9..a5705d08b72 100644
--- a/src/libextra/test.rs
+++ b/src/libextra/test.rs
@@ -38,7 +38,6 @@ use std::task;
 use std::to_str::ToStr;
 use std::u64;
 use std::f64;
-use std::hashmap::HashMap;
 use std::os;
 
 
@@ -852,7 +851,7 @@ fn calc_result(desc: &TestDesc, task_succeeded: bool) -> TestResult {
 
 impl ToJson for Metric {
     fn to_json(&self) -> json::Json {
-        let mut map = ~HashMap::new();
+        let mut map = ~TreeMap::new();
         map.insert(~"value", json::Number(self.value as float));
         map.insert(~"noise", json::Number(self.noise as float));
         json::Object(map)
diff --git a/src/libextra/workcache.rs b/src/libextra/workcache.rs
index f7585ca03ba..75b479592ed 100644
--- a/src/libextra/workcache.rs
+++ b/src/libextra/workcache.rs
@@ -21,7 +21,6 @@ use treemap::TreeMap;
 use std::cell::Cell;
 use std::comm::{PortOne, oneshot, send_one, recv_one};
 use std::either::{Either, Left, Right};
-use std::hashmap::HashMap;
 use std::io;
 use std::result;
 use std::run;
@@ -381,7 +380,7 @@ fn test() {
     }
 
     let cx = Context::new(RWARC(Database::new(Path("db.json"))),
-                          Logger::new(), HashMap::new());
+                          Logger::new(), TreeMap::new());
 
     let s = do cx.with_prep("test1") |prep| {
         prep.declare_input("file", pth.to_str(), digest_file(&pth));