diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs index c2692e9fa10..719ffe9bb87 100644 --- a/src/librustc/middle/astencode.rs +++ b/src/librustc/middle/astencode.rs @@ -558,7 +558,7 @@ trait read_method_map_entry_helper { fn encode_method_map_entry(ecx: @e::EncodeContext, ebml_w: writer::Encoder, mme: method_map_entry) { - do ebml_w.emit_rec { + do ebml_w.emit_struct("method_map_entry", 3) { do ebml_w.emit_field(~"self_arg", 0u) { ebml_w.emit_arg(ecx, mme.self_arg); } @@ -574,7 +574,7 @@ fn encode_method_map_entry(ecx: @e::EncodeContext, impl read_method_map_entry_helper for reader::Decoder { fn read_method_map_entry(&self, xcx: @ExtendedDecodeContext) -> method_map_entry { - do self.read_rec { + do self.read_struct("method_map_entry", 3) { method_map_entry { self_arg: self.read_field(~"self_arg", 0u, || { self.read_arg(xcx) @@ -817,7 +817,7 @@ impl ebml_writer_helpers for writer::Encoder { fn emit_tpbt(&self, ecx: @e::EncodeContext, tpbt: ty::ty_param_bounds_and_ty) { - do self.emit_rec { + do self.emit_struct("ty_param_bounds_and_ty", 3) { do self.emit_field(~"bounds", 0) { do self.emit_from_vec(*tpbt.bounds) |bs| { self.emit_bounds(ecx, *bs); @@ -1084,7 +1084,7 @@ impl ebml_decoder_decoder_helpers for reader::Decoder { fn read_ty_param_bounds_and_ty(&self, xcx: @ExtendedDecodeContext) -> ty::ty_param_bounds_and_ty { - do self.read_rec { + do self.read_struct("ty_param_bounds_and_ty", 3) { ty::ty_param_bounds_and_ty { bounds: self.read_field(~"bounds", 0u, || { @self.read_to_vec(|| self.read_bounds(xcx) ) diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs index 12a4ea14909..6b216504e54 100644 --- a/src/libstd/ebml.rs +++ b/src/libstd/ebml.rs @@ -362,11 +362,6 @@ pub mod reader { self.push_doc(self.next_doc(EsVecElt), f) } - fn read_rec(&self, f: &fn() -> T) -> T { - debug!("read_rec()"); - f() - } - fn read_struct(&self, name: &str, _len: uint, f: &fn() -> T) -> T { debug!("read_struct(name=%s)", name); f() @@ -644,7 +639,6 @@ pub mod writer { self.wr_tag(EsVecElt as uint, f) } - fn emit_rec(&self, f: &fn()) { f() } fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) { f() } fn emit_field(&self, name: &str, _idx: uint, f: &fn()) { self._emit_label(name); diff --git a/src/libstd/json.rs b/src/libstd/json.rs index fe5b0cf88e6..ac7119d8ed8 100644 --- a/src/libstd/json.rs +++ b/src/libstd/json.rs @@ -141,11 +141,6 @@ impl serialize::Encoder for Encoder { f() } - fn emit_rec(&self, f: &fn()) { - self.wr.write_char('{'); - f(); - self.wr.write_char('}'); - } fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) { self.wr.write_char('{'); f(); @@ -253,20 +248,17 @@ impl serialize::Encoder for PrettyEncoder { f() } - fn emit_rec(&self, f: &fn()) { - self.wr.write_char('{'); - self.indent += 2; - f(); - self.wr.write_char('\n'); - self.indent -= 2; - self.wr.write_str(spaces(self.indent)); - self.wr.write_char('}'); - } fn emit_struct(&self, _name: &str, len: uint, f: &fn()) { if len == 0 { self.wr.write_str("{}"); } else { - self.emit_rec(f) + self.wr.write_char('{'); + self.indent += 2; + f(); + self.wr.write_char('\n'); + self.indent -= 2; + self.wr.write_str(spaces(self.indent)); + self.wr.write_char('}'); } } fn emit_field(&self, name: &str, idx: uint, f: &fn()) { @@ -286,25 +278,25 @@ impl serialize::Encoder for PrettyEncoder { fn emit_option_some(&self, f: &fn()) { f(); } } -impl serialize::Encodable for Json { - fn encode(&self, s: &S) { +impl serialize::Encodable for Json { + fn encode(&self, e: &E) { match *self { - Number(v) => v.encode(s), - String(ref v) => v.encode(s), - Boolean(v) => v.encode(s), - List(ref v) => v.encode(s), + Number(v) => v.encode(e), + String(ref v) => v.encode(e), + Boolean(v) => v.encode(e), + List(ref v) => v.encode(e), Object(ref v) => { - do s.emit_rec || { + do e.emit_struct("Object", v.len())|| { let mut idx = 0; for v.each |&(key, value)| { - do s.emit_field(*key, idx) { - value.encode(s); + do e.emit_field(*key, idx) { + value.encode(e); } idx += 1; } } }, - Null => s.emit_nil(), + Null => e.emit_nil(), } } } @@ -855,13 +847,6 @@ impl<'self> serialize::Decoder for Decoder<'self> { } } - fn read_rec(&self, f: &fn() -> T) -> T { - debug!("read_rec()"); - let value = f(); - self.pop(); - value - } - fn read_struct(&self, _name: &str, _len: uint, f: &fn() -> T) -> T { debug!("read_struct()"); let value = f(); @@ -870,7 +855,7 @@ impl<'self> serialize::Decoder for Decoder<'self> { } fn read_field(&self, name: &str, idx: uint, f: &fn() -> T) -> T { - debug!("read_rec_field(%s, idx=%u)", name, idx); + debug!("read_field(%s, idx=%u)", name, idx); let top = self.peek(); match *top { Object(ref obj) => { diff --git a/src/libstd/serialize.rs b/src/libstd/serialize.rs index d0127bb0999..83201653474 100644 --- a/src/libstd/serialize.rs +++ b/src/libstd/serialize.rs @@ -49,7 +49,6 @@ pub trait Encoder { fn emit_seq(&self, len: uint, f: &fn()); fn emit_seq_elt(&self, idx: uint, f: &fn()); - fn emit_rec(&self, f: &fn()); fn emit_struct(&self, name: &str, _len: uint, f: &fn()); fn emit_field(&self, f_name: &str, f_idx: uint, f: &fn()); @@ -92,7 +91,6 @@ pub trait Decoder { fn read_seq(&self, f: &fn(uint) -> T) -> T; fn read_seq_elt(&self, idx: uint, f: &fn() -> T) -> T; - fn read_rec(&self, f: &fn() -> T) -> T; fn read_struct(&self, name: &str, _len: uint, f: &fn() -> T) -> T; fn read_field(&self, name: &str, idx: uint, f: &fn() -> T) -> T; diff --git a/src/libsyntax/ext/auto_encode.rs b/src/libsyntax/ext/auto_encode.rs index d4e1fa3abf7..3aceef9c73a 100644 --- a/src/libsyntax/ext/auto_encode.rs +++ b/src/libsyntax/ext/auto_encode.rs @@ -1262,9 +1262,6 @@ mod test { self.add_unknown_to_log(); f(); } - fn emit_rec(&self, f: &fn()) { - self.add_unknown_to_log(); f(); - } fn emit_struct(&self, name: &str, +len: uint, f: &fn()) { self.add_to_log(CallToEmitStruct (name.to_str(),len)); f(); }