diff --git a/src/librbml/lib.rs b/src/librbml/lib.rs index 9bb5777ec9a..1dfc0d970a9 100644 --- a/src/librbml/lib.rs +++ b/src/librbml/lib.rs @@ -562,10 +562,12 @@ pub mod reader { f: |&mut Decoder<'doc>| -> DecodeResult) -> DecodeResult { 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(Expected(format!("Expected tuple of length `{}`, \ + found tuple of length `{}`", tuple_len, len))) + } }) } 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 for Decoder { Ok(value) } - fn read_tuple(&mut self, tuple_len: uint, f: |&mut Decoder| -> DecodeResult) -> DecodeResult { + fn read_tuple(&mut self, + tuple_len: uint, + f: |&mut Decoder| -> DecodeResult) + -> DecodeResult { 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]