summary refs log tree commit diff
path: root/src/libserialize
diff options
context:
space:
mode:
authorDan Burkert <dan@danburkert.com>2014-10-25 09:29:41 -0700
committerDan Burkert <dan@danburkert.com>2014-11-01 10:54:34 -0700
commit05f6bdaefc7e0b94ea0b1892e6fe5dc79cd2514d (patch)
tree0177963e73631f915356ec11b9a3a28a4464760d /src/libserialize
parentca6b082c0573f9d6f6c81403ac7ea4b5b78260d6 (diff)
downloadrust-05f6bdaefc7e0b94ea0b1892e6fe5dc79cd2514d.tar.gz
rust-05f6bdaefc7e0b94ea0b1892e6fe5dc79cd2514d.zip
Tuple deserialization should not fail
Diffstat (limited to 'src/libserialize')
-rw-r--r--src/libserialize/json.rs17
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]