Skip to content

Commit e75a843

Browse files
committed
auto merge of #5357 : jbclements/rust/add-nonempty-span-encoding, r=jbclements
r? @nikomatsakis r? @erickt Before this change, encoding an object containing a codemap::span using the JSON encodeng produced invalid JSON, for instance: [{"span":,"global":false,"idents":["abc"]}] Since the decoder for codemap::span's ignores its argument, I conjecture that this will not damage decoding, and should improve it for many decoders.
2 parents 2b059c6 + 4bd2648 commit e75a843

File tree

2 files changed

+14
-15
lines changed

2 files changed

+14
-15
lines changed

src/libsyntax/codemap.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ impl cmp::Eq for span {
140140

141141
impl<S:Encoder> Encodable<S> for span {
142142
/* Note #1972 -- spans are encoded but not decoded */
143-
fn encode(&self, _s: &S) { }
143+
fn encode(&self, _s: &S) { _s.emit_nil() }
144144
}
145145

146146
impl<D:Decoder> Decodable<D> for span {

src/libsyntax/parse/mod.rs

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -297,10 +297,9 @@ mod test {
297297
use std;
298298
use core::io;
299299
use core::option::None;
300-
use core::str;
301300
use util::testing::*;
302301

303-
#[test] fn to_json_str (val: @Encodable<std::json::Encoder>) -> ~str {
302+
#[test] fn to_json_str<E : Encodable<std::json::Encoder>>(val: @E) -> ~str {
304303
do io::with_str_writer |writer| {
305304
val.encode(~std::json::Encoder(writer));
306305
}
@@ -312,18 +311,18 @@ mod test {
312311
@~"fn foo (x : int) { x; }",
313312
~[],
314313
new_parse_sess(None));
315-
check_equal(to_json_str(@tts as @Encodable<std::json::Encoder>),
316-
~"[[\"tt_tok\",[,[\"IDENT\",[\"fn\",false]]]],\
317-
[\"tt_tok\",[,[\"IDENT\",[\"foo\",false]]]],\
318-
[\"tt_delim\",[[[\"tt_tok\",[,[\"LPAREN\",[]]]],\
319-
[\"tt_tok\",[,[\"IDENT\",[\"x\",false]]]],\
320-
[\"tt_tok\",[,[\"COLON\",[]]]],\
321-
[\"tt_tok\",[,[\"IDENT\",[\"int\",false]]]],\
322-
[\"tt_tok\",[,[\"RPAREN\",[]]]]]]],\
323-
[\"tt_delim\",[[[\"tt_tok\",[,[\"LBRACE\",[]]]],\
324-
[\"tt_tok\",[,[\"IDENT\",[\"x\",false]]]],\
325-
[\"tt_tok\",[,[\"SEMI\",[]]]],\
326-
[\"tt_tok\",[,[\"RBRACE\",[]]]]]]]]"
314+
check_equal(to_json_str(@tts),
315+
~"[[\"tt_tok\",[null,[\"IDENT\",[\"fn\",false]]]],\
316+
[\"tt_tok\",[null,[\"IDENT\",[\"foo\",false]]]],\
317+
[\"tt_delim\",[[[\"tt_tok\",[null,[\"LPAREN\",[]]]],\
318+
[\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\
319+
[\"tt_tok\",[null,[\"COLON\",[]]]],\
320+
[\"tt_tok\",[null,[\"IDENT\",[\"int\",false]]]],\
321+
[\"tt_tok\",[null,[\"RPAREN\",[]]]]]]],\
322+
[\"tt_delim\",[[[\"tt_tok\",[null,[\"LBRACE\",[]]]],\
323+
[\"tt_tok\",[null,[\"IDENT\",[\"x\",false]]]],\
324+
[\"tt_tok\",[null,[\"SEMI\",[]]]],\
325+
[\"tt_tok\",[null,[\"RBRACE\",[]]]]]]]]"
327326
);
328327
let ast1 = new_parser_from_tts(new_parse_sess(None),~[],tts)
329328
.parse_item(~[]);

0 commit comments

Comments
 (0)