From f7b739c34c8b25ca6c98a97dcd1189063f1bf5e9 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 29 Nov 2013 11:11:52 -0800 Subject: extra: Rename json constructors into *::init --- src/libsyntax/parse/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libsyntax/parse') diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 8fbd152543d..c932c188279 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -343,7 +343,7 @@ mod test { #[cfg(test)] fn to_json_str>(val: @E) -> ~str { let writer = @mut MemWriter::new(); - let mut encoder = extra::json::Encoder(writer as @mut io::Writer); + let mut encoder = extra::json::Encoder::init(writer as @mut io::Writer); val.encode(&mut encoder); str::from_utf8(*writer.inner_ref()) } -- cgit 1.4.1-3-g733a5 From 6818b96a66f51c8912e3d8e88fb79e7956743190 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 29 Nov 2013 10:12:08 -0800 Subject: extra: json::Encoder should take a &mut io::Writer --- src/libextra/json.rs | 100 ++++++++++++++++++++++----------------------- src/libextra/workcache.rs | 16 ++++---- src/libsyntax/parse/mod.rs | 7 ++-- 3 files changed, 62 insertions(+), 61 deletions(-) (limited to 'src/libsyntax/parse') diff --git a/src/libextra/json.rs b/src/libextra/json.rs index e0792014c77..1b2165fb4cf 100644 --- a/src/libextra/json.rs +++ b/src/libextra/json.rs @@ -84,19 +84,19 @@ fn spaces(n: uint) -> ~str { } /// A structure for implementing serialization to JSON. -pub struct Encoder { - priv wr: @mut io::Writer, +pub struct Encoder<'self> { + priv wr: &'self mut io::Writer, } -impl Encoder { +impl<'self> Encoder<'self> { /// Creates a new JSON encoder whose output will be written to the writer /// specified. - pub fn init(wr: @mut io::Writer) -> Encoder { + pub fn init<'a>(wr: &'a mut io::Writer) -> Encoder<'a> { Encoder { wr: wr } } } -impl serialize::Encoder for Encoder { +impl<'self> serialize::Encoder for Encoder<'self> { fn emit_nil(&mut self) { write!(self.wr, "null") } fn emit_uint(&mut self, v: uint) { self.emit_f64(v as f64); } @@ -129,13 +129,13 @@ impl serialize::Encoder for Encoder { write!(self.wr, "{}", escape_str(v)) } - fn emit_enum(&mut self, _name: &str, f: |&mut Encoder|) { f(self) } + fn emit_enum(&mut self, _name: &str, f: |&mut Encoder<'self>|) { f(self) } fn emit_enum_variant(&mut self, name: &str, _id: uint, cnt: uint, - f: |&mut Encoder|) { + f: |&mut Encoder<'self>|) { // enums are encoded as strings or objects // Bunny => "Bunny" // Kangaroo(34,"William") => {"variant": "Kangaroo", "fields": [34,"William"]} @@ -150,7 +150,7 @@ impl serialize::Encoder for Encoder { } } - fn emit_enum_variant_arg(&mut self, idx: uint, f: |&mut Encoder|) { + fn emit_enum_variant_arg(&mut self, idx: uint, f: |&mut Encoder<'self>|) { if idx != 0 { write!(self.wr, ","); } @@ -161,18 +161,18 @@ impl serialize::Encoder for Encoder { name: &str, id: uint, cnt: uint, - f: |&mut Encoder|) { + f: |&mut Encoder<'self>|) { self.emit_enum_variant(name, id, cnt, f) } fn emit_enum_struct_variant_field(&mut self, _: &str, idx: uint, - f: |&mut Encoder|) { + f: |&mut Encoder<'self>|) { self.emit_enum_variant_arg(idx, f) } - fn emit_struct(&mut self, _: &str, _: uint, f: |&mut Encoder|) { + fn emit_struct(&mut self, _: &str, _: uint, f: |&mut Encoder<'self>|) { write!(self.wr, r"\{"); f(self); write!(self.wr, r"\}"); @@ -181,58 +181,58 @@ impl serialize::Encoder for Encoder { fn emit_struct_field(&mut self, name: &str, idx: uint, - f: |&mut Encoder|) { + f: |&mut Encoder<'self>|) { if idx != 0 { write!(self.wr, ",") } write!(self.wr, "{}:", escape_str(name)); f(self); } - fn emit_tuple(&mut self, len: uint, f: |&mut Encoder|) { + fn emit_tuple(&mut self, len: uint, f: |&mut Encoder<'self>|) { self.emit_seq(len, f) } - fn emit_tuple_arg(&mut self, idx: uint, f: |&mut Encoder|) { + fn emit_tuple_arg(&mut self, idx: uint, f: |&mut Encoder<'self>|) { self.emit_seq_elt(idx, f) } fn emit_tuple_struct(&mut self, _name: &str, len: uint, - f: |&mut Encoder|) { + f: |&mut Encoder<'self>|) { self.emit_seq(len, f) } - fn emit_tuple_struct_arg(&mut self, idx: uint, f: |&mut Encoder|) { + fn emit_tuple_struct_arg(&mut self, idx: uint, f: |&mut Encoder<'self>|) { self.emit_seq_elt(idx, f) } - fn emit_option(&mut self, f: |&mut Encoder|) { f(self); } + fn emit_option(&mut self, f: |&mut Encoder<'self>|) { f(self); } fn emit_option_none(&mut self) { self.emit_nil(); } - fn emit_option_some(&mut self, f: |&mut Encoder|) { f(self); } + fn emit_option_some(&mut self, f: |&mut Encoder<'self>|) { f(self); } - fn emit_seq(&mut self, _len: uint, f: |&mut Encoder|) { + fn emit_seq(&mut self, _len: uint, f: |&mut Encoder<'self>|) { write!(self.wr, "["); f(self); write!(self.wr, "]"); } - fn emit_seq_elt(&mut self, idx: uint, f: |&mut Encoder|) { + fn emit_seq_elt(&mut self, idx: uint, f: |&mut Encoder<'self>|) { if idx != 0 { write!(self.wr, ","); } f(self) } - fn emit_map(&mut self, _len: uint, f: |&mut Encoder|) { + fn emit_map(&mut self, _len: uint, f: |&mut Encoder<'self>|) { write!(self.wr, r"\{"); f(self); write!(self.wr, r"\}"); } - fn emit_map_elt_key(&mut self, idx: uint, f: |&mut Encoder|) { + fn emit_map_elt_key(&mut self, idx: uint, f: |&mut Encoder<'self>|) { if idx != 0 { write!(self.wr, ",") } f(self) } - fn emit_map_elt_val(&mut self, _idx: uint, f: |&mut Encoder|) { + fn emit_map_elt_val(&mut self, _idx: uint, f: |&mut Encoder<'self>|) { write!(self.wr, ":"); f(self) } @@ -240,14 +240,14 @@ impl serialize::Encoder for Encoder { /// Another encoder for JSON, but prints out human-readable JSON instead of /// compact data -pub struct PrettyEncoder { - priv wr: @mut io::Writer, +pub struct PrettyEncoder<'self> { + priv wr: &'self mut io::Writer, priv indent: uint, } -impl PrettyEncoder { +impl<'self> PrettyEncoder<'self> { /// Creates a new encoder whose output will be written to the specified writer - pub fn init(wr: @mut io::Writer) -> PrettyEncoder { + pub fn init<'a>(wr: &'a mut io::Writer) -> PrettyEncoder<'a> { PrettyEncoder { wr: wr, indent: 0, @@ -255,7 +255,7 @@ impl PrettyEncoder { } } -impl serialize::Encoder for PrettyEncoder { +impl<'self> serialize::Encoder for PrettyEncoder<'self> { fn emit_nil(&mut self) { write!(self.wr, "null") } fn emit_uint(&mut self, v: uint) { self.emit_f64(v as f64); } @@ -286,7 +286,7 @@ impl serialize::Encoder for PrettyEncoder { fn emit_char(&mut self, v: char) { self.emit_str(str::from_char(v)) } fn emit_str(&mut self, v: &str) { write!(self.wr, "{}", escape_str(v)); } - fn emit_enum(&mut self, _name: &str, f: |&mut PrettyEncoder|) { + fn emit_enum(&mut self, _name: &str, f: |&mut PrettyEncoder<'self>|) { f(self) } @@ -294,7 +294,7 @@ impl serialize::Encoder for PrettyEncoder { name: &str, _: uint, cnt: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { if cnt == 0 { write!(self.wr, "{}", escape_str(name)); } else { @@ -308,7 +308,7 @@ impl serialize::Encoder for PrettyEncoder { fn emit_enum_variant_arg(&mut self, idx: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { if idx != 0 { write!(self.wr, ",\n"); } @@ -320,14 +320,14 @@ impl serialize::Encoder for PrettyEncoder { name: &str, id: uint, cnt: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { self.emit_enum_variant(name, id, cnt, f) } fn emit_enum_struct_variant_field(&mut self, _: &str, idx: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { self.emit_enum_variant_arg(idx, f) } @@ -335,7 +335,7 @@ impl serialize::Encoder for PrettyEncoder { fn emit_struct(&mut self, _: &str, len: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { if len == 0 { write!(self.wr, "\\{\\}"); } else { @@ -350,7 +350,7 @@ impl serialize::Encoder for PrettyEncoder { fn emit_struct_field(&mut self, name: &str, idx: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { if idx == 0 { write!(self.wr, "\n"); } else { @@ -360,30 +360,30 @@ impl serialize::Encoder for PrettyEncoder { f(self); } - fn emit_tuple(&mut self, len: uint, f: |&mut PrettyEncoder|) { + fn emit_tuple(&mut self, len: uint, f: |&mut PrettyEncoder<'self>|) { self.emit_seq(len, f) } - fn emit_tuple_arg(&mut self, idx: uint, f: |&mut PrettyEncoder|) { + fn emit_tuple_arg(&mut self, idx: uint, f: |&mut PrettyEncoder<'self>|) { self.emit_seq_elt(idx, f) } fn emit_tuple_struct(&mut self, _: &str, len: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { self.emit_seq(len, f) } fn emit_tuple_struct_arg(&mut self, idx: uint, - f: |&mut PrettyEncoder|) { + f: |&mut PrettyEncoder<'self>|) { self.emit_seq_elt(idx, f) } - fn emit_option(&mut self, f: |&mut PrettyEncoder|) { f(self); } + fn emit_option(&mut self, f: |&mut PrettyEncoder<'self>|) { f(self); } fn emit_option_none(&mut self) { self.emit_nil(); } - fn emit_option_some(&mut self, f: |&mut PrettyEncoder|) { f(self); } + fn emit_option_some(&mut self, f: |&mut PrettyEncoder<'self>|) { f(self); } - fn emit_seq(&mut self, len: uint, f: |&mut PrettyEncoder|) { + fn emit_seq(&mut self, len: uint, f: |&mut PrettyEncoder<'self>|) { if len == 0 { write!(self.wr, "[]"); } else { @@ -395,7 +395,7 @@ impl serialize::Encoder for PrettyEncoder { } } - fn emit_seq_elt(&mut self, idx: uint, f: |&mut PrettyEncoder|) { + fn emit_seq_elt(&mut self, idx: uint, f: |&mut PrettyEncoder<'self>|) { if idx == 0 { write!(self.wr, "\n"); } else { @@ -405,7 +405,7 @@ impl serialize::Encoder for PrettyEncoder { f(self) } - fn emit_map(&mut self, len: uint, f: |&mut PrettyEncoder|) { + fn emit_map(&mut self, len: uint, f: |&mut PrettyEncoder<'self>|) { if len == 0 { write!(self.wr, "\\{\\}"); } else { @@ -417,7 +417,7 @@ impl serialize::Encoder for PrettyEncoder { } } - fn emit_map_elt_key(&mut self, idx: uint, f: |&mut PrettyEncoder|) { + fn emit_map_elt_key(&mut self, idx: uint, f: |&mut PrettyEncoder<'self>|) { if idx == 0 { write!(self.wr, "\n"); } else { @@ -427,7 +427,7 @@ impl serialize::Encoder for PrettyEncoder { f(self); } - fn emit_map_elt_val(&mut self, _idx: uint, f: |&mut PrettyEncoder|) { + fn emit_map_elt_val(&mut self, _idx: uint, f: |&mut PrettyEncoder<'self>|) { write!(self.wr, ": "); f(self); } @@ -448,22 +448,22 @@ impl serialize::Encodable for Json { impl Json{ /// Encodes a json value into a io::writer. Uses a single line. - pub fn to_writer(&self, wr: @mut io::Writer) { + pub fn to_writer(&self, wr: &mut io::Writer) { let mut encoder = Encoder::init(wr); self.encode(&mut encoder) } /// Encodes a json value into a io::writer. /// Pretty-prints in a more readable format. - pub fn to_pretty_writer(&self, wr: @mut io::Writer) { + pub fn to_pretty_writer(&self, wr: &mut io::Writer) { let mut encoder = PrettyEncoder::init(wr); self.encode(&mut encoder) } /// Encodes a json value into a string pub fn to_pretty_str(&self) -> ~str { - let s = @mut MemWriter::new(); - self.to_pretty_writer(s as @mut io::Writer); + let mut s = MemWriter::new(); + self.to_pretty_writer(&mut s as &mut io::Writer); str::from_utf8(s.inner_ref().as_slice()) } } diff --git a/src/libextra/workcache.rs b/src/libextra/workcache.rs index 27a0f515597..ab36defe522 100644 --- a/src/libextra/workcache.rs +++ b/src/libextra/workcache.rs @@ -256,9 +256,9 @@ enum Work<'self, T> { WorkFromTask(&'self Prep<'self>, PortOne<(Exec, T)>), } -fn json_encode>(t: &T) -> ~str { - let writer = @mut MemWriter::new(); - let mut encoder = json::Encoder::init(writer as @mut io::Writer); +fn json_encode<'self, T:Encodable>>(t: &T) -> ~str { + let mut writer = MemWriter::new(); + let mut encoder = json::Encoder::init(&mut writer as &mut io::Writer); t.encode(&mut encoder); str::from_utf8(writer.inner_ref().as_slice()) } @@ -396,15 +396,15 @@ impl<'self> Prep<'self> { return true; } - pub fn exec + + pub fn exec<'self, T:Send + + Encodable> + Decodable>( &'self self, blk: proc(&mut Exec) -> T) -> T { self.exec_work(blk).unwrap() } - fn exec_work + + fn exec_work<'self, T:Send + + Encodable> + Decodable>( // FIXME(#5121) &'self self, blk: proc(&mut Exec) -> T) -> Work<'self, T> { let mut bo = Some(blk); @@ -449,7 +449,7 @@ impl<'self> Prep<'self> { } impl<'self, T:Send + - Encodable + + Encodable> + Decodable> Work<'self, T> { // FIXME(#5121) diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index c932c188279..988e9958c2b 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -341,9 +341,10 @@ mod test { use util::parser_testing::{string_to_expr, string_to_item}; use util::parser_testing::string_to_stmt; - #[cfg(test)] fn to_json_str>(val: @E) -> ~str { - let writer = @mut MemWriter::new(); - let mut encoder = extra::json::Encoder::init(writer as @mut io::Writer); + #[cfg(test)] + fn to_json_str<'a, E: Encodable>>(val: &E) -> ~str { + let mut writer = MemWriter::new(); + let mut encoder = extra::json::Encoder::init(&mut writer as &mut io::Writer); val.encode(&mut encoder); str::from_utf8(*writer.inner_ref()) } -- cgit 1.4.1-3-g733a5 From a7b311ac614ea15f7261eb2ddca56072c18b3cba Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 29 Nov 2013 21:26:03 -0800 Subject: extra: missed a couple `@` in json --- src/libextra/json.rs | 18 +++++++++--------- src/libextra/test.rs | 5 +++-- src/librustdoc/lib.rs | 9 ++++++--- src/libsyntax/parse/mod.rs | 2 +- 4 files changed, 19 insertions(+), 15 deletions(-) (limited to 'src/libsyntax/parse') diff --git a/src/libextra/json.rs b/src/libextra/json.rs index 1b2165fb4cf..30288a08c79 100644 --- a/src/libextra/json.rs +++ b/src/libextra/json.rs @@ -464,7 +464,7 @@ impl Json{ pub fn to_pretty_str(&self) -> ~str { let mut s = MemWriter::new(); self.to_pretty_writer(&mut s as &mut io::Writer); - str::from_utf8(s.inner_ref().as_slice()) + str::from_utf8_owned(s.inner()) } } @@ -847,7 +847,7 @@ impl> Parser { /// Decodes a json value from an `&mut io::Reader` pub fn from_reader(rdr: &mut io::Reader) -> Result { - let s = str::from_utf8(rdr.read_to_end()); + let s = str::from_utf8_owned(rdr.read_to_end()); let mut parser = Parser::init(s.chars()); parser.parse() } @@ -1319,9 +1319,9 @@ impl ToJson for Option { impl to_str::ToStr for Json { /// Encodes a json value into a string fn to_str(&self) -> ~str { - let s = @mut MemWriter::new(); - self.to_writer(s as @mut io::Writer); - str::from_utf8(s.inner_ref().as_slice()) + let mut s = MemWriter::new(); + self.to_writer(&mut s as &mut io::Writer); + str::from_utf8_owned(s.inner()) } } @@ -1507,14 +1507,14 @@ mod tests { assert_eq!(a.clone(), from_str(a.to_pretty_str()).unwrap()); } - fn with_str_writer(f: |@mut io::Writer|) -> ~str { + fn with_str_writer(f: |&mut io::Writer|) -> ~str { use std::io::mem::MemWriter; use std::io::Decorator; use std::str; - let m = @mut MemWriter::new(); - f(m as @mut io::Writer); - str::from_utf8(*m.inner_ref()) + let mut m = MemWriter::new(); + f(&mut m as &mut io::Writer); + str::from_utf8_owned(m.inner()) } #[test] diff --git a/src/libextra/test.rs b/src/libextra/test.rs index ba9478e4448..7d6fd81c614 100644 --- a/src/libextra/test.rs +++ b/src/libextra/test.rs @@ -945,8 +945,9 @@ impl MetricMap { /// Load MetricDiff from a file. pub fn load(p: &Path) -> MetricMap { assert!(p.exists()); - let f = @mut File::open(p) as @mut io::Reader; - let mut decoder = json::Decoder::init(json::from_reader(f).unwrap()); + let mut f = File::open(p); + let value = json::from_reader(&mut f as &mut io::Reader).unwrap(); + let mut decoder = json::Decoder::init(value); MetricMap(Decodable::decode(&mut decoder)) } diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index 5edafa1b1f6..b2fb72d983b 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -312,9 +312,12 @@ fn json_output(crate: clean::Crate, res: ~[plugins::PluginJson], dst: Path) { // FIXME #8335: yuck, Rust -> str -> JSON round trip! No way to .encode // straight to the Rust JSON representation. let crate_json_str = { - let w = @mut MemWriter::new(); - crate.encode(&mut json::Encoder::init(w as @mut io::Writer)); - str::from_utf8(*w.inner_ref()) + let mut w = MemWriter::new(); + { + let mut encoder = json::Encoder::init(&mut w as &mut io::Writer); + crate.encode(&mut encoder); + } + str::from_utf8_owned(w.inner()) }; let crate_json = match json::from_str(crate_json_str) { Ok(j) => j, diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 988e9958c2b..54a3dad9495 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -346,7 +346,7 @@ mod test { let mut writer = MemWriter::new(); let mut encoder = extra::json::Encoder::init(&mut writer as &mut io::Writer); val.encode(&mut encoder); - str::from_utf8(*writer.inner_ref()) + str::from_utf8_owned(writer.inner()) } // produce a codemap::span -- cgit 1.4.1-3-g733a5