]> git.lizzy.rs Git - rust.git/commit
auto merge of #15192 : mrec/rust/json-nan, r=alexcrichton
authorbors <bors@rust-lang.org>
Thu, 26 Jun 2014 14:32:30 +0000 (14:32 +0000)
committerbors <bors@rust-lang.org>
Thu, 26 Jun 2014 14:32:30 +0000 (14:32 +0000)
commitfa63b8c8138ca826a6fee7673a170ab0615cb678
treeeb344bce173253518adb892bc80dc98c389b36f9
parentfc502e23458c695b008e3470ec5ef40421b8aaa2
parente1a9899a3a12f9f5fde6d5757c13bc248e89617d
auto merge of #15192 : mrec/rust/json-nan, r=alexcrichton

The JSON spec requires that these special values be serialized as "null"; the current serialization breaks any conformant JSON parser. So encoding needs to output "null",  `to_json` on floating-point types can return `Null` as well as `Number` values, and reading a `Null` value when specifically expecting a number should be interpreted as NaN. There's no way to round-trip Infinity through JSON.

This is my first attempt at both writing Rust and opening pull requests, so please dial your derp detector up to eleven when reviewing. A `rustc --test lib.rs` in `libserialize` passes all tests; a `make check` of the whole tree fails with the error below, but it doesn't look obviously related and the docs say that `make check` is known to be flaky on Windows.

    ---- [compile-fail] compile-fail/svh-change-significant-cfg.rs stdout ----
            task '[compile-fail] compile-fail/svh-change-significant-cfg.rs' failed at 'called `Result::
    unwrap()` on an `Err` value: couldn't create file (end of file (unknown error); path=i686-pc-mingw32
    \test\compile-fail\svh-a-base.err; mode=truncate; access=write)', C:\msys\home\Mike\rust\src\libcore
    \result.rs:545

Incidentally, it may just be my lack of familiarity with the language and its idioms, but the duplication between `Encoder`/`PrettyEncoder` had a distinct code smell to it. The size of the file (~3500 lines) also made it a bit hard to navigate. Has there been any discussion of refactoring and/or breaking it up? I couldn't find anything in Issues except the ancient #9028.