diff options
| author | Dan Burkert <dan@danburkert.com> | 2014-10-25 09:29:41 -0700 |
|---|---|---|
| committer | Dan Burkert <dan@danburkert.com> | 2014-11-01 10:54:34 -0700 |
| commit | 05f6bdaefc7e0b94ea0b1892e6fe5dc79cd2514d (patch) | |
| tree | 0177963e73631f915356ec11b9a3a28a4464760d /src/libserialize | |
| parent | ca6b082c0573f9d6f6c81403ac7ea4b5b78260d6 (diff) | |
| download | rust-05f6bdaefc7e0b94ea0b1892e6fe5dc79cd2514d.tar.gz rust-05f6bdaefc7e0b94ea0b1892e6fe5dc79cd2514d.zip | |
Tuple deserialization should not fail
Diffstat (limited to 'src/libserialize')
| -rw-r--r-- | src/libserialize/json.rs | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index e5847ce58db..06f934c075d 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -2153,13 +2153,17 @@ impl ::Decoder<DecoderError> for Decoder { Ok(value) } - fn read_tuple<T>(&mut self, tuple_len: uint, f: |&mut Decoder| -> DecodeResult<T>) -> DecodeResult<T> { + fn read_tuple<T>(&mut self, + tuple_len: uint, + f: |&mut Decoder| -> DecodeResult<T>) + -> DecodeResult<T> { debug!("read_tuple()"); self.read_seq(|d, len| { - assert!(len == tuple_len, - "expected tuple of length `{}`, found tuple \ - of length `{}`", tuple_len, len); - f(d) + if len == tuple_len { + f(d) + } else { + Err(ExpectedError(format!("Tuple{}", tuple_len), format!("Tuple{}", len))) + } }) } @@ -2893,9 +2897,8 @@ mod tests { } #[test] - #[should_fail] fn test_decode_tuple_malformed_length() { - let _ = super::decode::<(uint, uint)>("[1, 2, 3]"); + assert!(super::decode::<(uint, uint)>("[1, 2, 3]").is_err()); } #[test] |
