about summary refs log tree commit diff
diff options
context:
space:
mode:
authorZack M. Davis <code@zackmdavis.net>2017-07-14 08:50:22 -0700
committerZack M. Davis <code@zackmdavis.net>2017-07-14 10:51:14 -0700
commit30ad6252a3ab9e396c22d234a8b018df29c1dde9 (patch)
treefbeedcf2ab5b8aaffa15b943a15900e03b28f4a0
parent20f77c6dfd49aac98f217a313ce399644f56ab54 (diff)
downloadrust-30ad6252a3ab9e396c22d234a8b018df29c1dde9.tar.gz
rust-30ad6252a3ab9e396c22d234a8b018df29c1dde9.zip
add u128/i128 to sum/product implementors
Resolves #43235.
-rw-r--r--src/libcore/iter/traits.rs2
-rw-r--r--src/test/run-pass/i128.rs4
-rw-r--r--src/test/run-pass/u128.rs4
3 files changed, 9 insertions, 1 deletions
diff --git a/src/libcore/iter/traits.rs b/src/libcore/iter/traits.rs
index 679cf3a9b23..d35aa026685 100644
--- a/src/libcore/iter/traits.rs
+++ b/src/libcore/iter/traits.rs
@@ -732,7 +732,7 @@ macro_rules! float_sum_product {
     )*)
 }
 
-integer_sum_product! { i8 i16 i32 i64 isize u8 u16 u32 u64 usize }
+integer_sum_product! { i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize }
 float_sum_product! { f32 f64 }
 
 /// An iterator adapter that produces output as long as the underlying
diff --git a/src/test/run-pass/i128.rs b/src/test/run-pass/i128.rs
index c5057f70c06..7c14d34b0ee 100644
--- a/src/test/run-pass/i128.rs
+++ b/src/test/run-pass/i128.rs
@@ -109,4 +109,8 @@ fn main() {
     assert_eq!(b(-87559967289969187895646876466835277875_i128) /
                b(84285771033834995895337664386045050880_i128),
                -1i128);
+
+    // iter-arithmetic traits
+    assert_eq!(10i128, [1i128, 2, 3, 4].iter().sum());
+    assert_eq!(24i128, [1i128, 2, 3, 4].iter().product());
 }
diff --git a/src/test/run-pass/u128.rs b/src/test/run-pass/u128.rs
index cfd616c56b4..b16f6c7b6af 100644
--- a/src/test/run-pass/u128.rs
+++ b/src/test/run-pass/u128.rs
@@ -122,4 +122,8 @@ fn main() {
     assert_eq!(b(0x679289ac23bb334f_36144401cf882172_u128) /
                b(0x7b0b271b64865f05_f54a7b72746c062f_u128),
                0u128);
+
+    // iter-arithmetic traits
+    assert_eq!(10u128, [1u128, 2, 3, 4].iter().sum());
+    assert_eq!(24u128, [1u128, 2, 3, 4].iter().product());
 }