diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index 19236f2cd98..8d6c0df981f 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -164,16 +164,31 @@ impl Eq for Span {} impl Encodable for Span { fn encode(&self, s: &mut S) -> Result<(), S::Error> { - try!(s.emit_u32(self.lo.0)); - s.emit_u32(self.hi.0) + s.emit_struct("Span", 2, |s| { + try!(s.emit_struct_field("lo", 0, |s| { + self.lo.encode(s) + })); + + s.emit_struct_field("hi", 1, |s| { + self.hi.encode(s) + }) + }) } } impl Decodable for Span { fn decode(d: &mut D) -> Result { - let lo = BytePos(try! { d.read_u32() }); - let hi = BytePos(try! { d.read_u32() }); - Ok(mk_sp(lo, hi)) + d.read_struct("Span", 2, |d| { + let lo = try!(d.read_struct_field("lo", 0, |d| { + BytePos::decode(d) + })); + + let hi = try!(d.read_struct_field("hi", 1, |d| { + BytePos::decode(d) + })); + + Ok(mk_sp(lo, hi)) + }) } }