about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2015-03-24 15:45:11 -0400
committerNiko Matsakis <niko@alum.mit.edu>2015-03-30 05:02:20 -0400
commitc92bdcb232da3973a8a548e6b2044b610e286210 (patch)
treeb41dd1d636f8565c1cbc00ed775858b1cf9b628d
parentd6466ff13aef6af45f24f28e23f2f3dd36c96cf0 (diff)
downloadrust-c92bdcb232da3973a8a548e6b2044b610e286210.tar.gz
rust-c92bdcb232da3973a8a548e6b2044b610e286210.zip
Fallout where types must be specified.
This is due to a [breaking-change] to operators. The primary affected
code is uses of the `Rng` trait where we used to (incorrectly) infer the
right-hand-side type from the left-hand-side, in the case that the LHS
type was a scalar like `i32`. The fix is to add a type annotation like
`x + rng.gen::<i32>()`.
-rw-r--r--src/libcollectionstest/bench.rs6
-rw-r--r--src/librand/distributions/mod.rs2
-rw-r--r--src/librand/distributions/range.rs2
-rw-r--r--src/test/auxiliary/lang-item-public.rs18
-rw-r--r--src/test/bench/noise.rs2
-rw-r--r--src/test/run-pass/dst-raw.rs4
-rw-r--r--src/test/run-pass/early-ret-binop-add.rs5
-rw-r--r--src/test/run-pass/issue-1460.rs2
-rw-r--r--src/test/run-pass/issue-16560.rs2
-rw-r--r--src/test/run-pass/issue-21634.rs6
-rw-r--r--src/test/run-pass/issue-8460.rs20
-rw-r--r--src/test/run-pass/reexported-static-methods-cross-crate.rs4
12 files changed, 47 insertions, 26 deletions
diff --git a/src/libcollectionstest/bench.rs b/src/libcollectionstest/bench.rs
index e883b07dc5a..8f2e71b666c 100644
--- a/src/libcollectionstest/bench.rs
+++ b/src/libcollectionstest/bench.rs
@@ -22,13 +22,13 @@ macro_rules! map_insert_rand_bench {
             let mut rng = rand::weak_rng();
 
             for _ in 0..n {
-                let i = rng.gen() % n;
+                let i = rng.gen::<usize>() % n;
                 map.insert(i, i);
             }
 
             // measure
             b.iter(|| {
-                let k = rng.gen() % n;
+                let k = rng.gen::<usize>() % n;
                 map.insert(k, k);
                 map.remove(&k);
             });
@@ -77,7 +77,7 @@ macro_rules! map_find_rand_bench {
 
             // setup
             let mut rng = rand::weak_rng();
-            let mut keys: Vec<_> = (0..n).map(|_| rng.gen() % n).collect();
+            let mut keys: Vec<_> = (0..n).map(|_| rng.gen::<usize>() % n).collect();
 
             for &k in &keys {
                 map.insert(k, k);
diff --git a/src/librand/distributions/mod.rs b/src/librand/distributions/mod.rs
index cb0829f5245..62189e721e5 100644
--- a/src/librand/distributions/mod.rs
+++ b/src/librand/distributions/mod.rs
@@ -256,7 +256,7 @@ fn ziggurat<R: Rng, P, Z>(
             return zero_case(rng, u);
         }
         // algebraically equivalent to f1 + DRanU()*(f0 - f1) < 1
-        if f_tab[i + 1] + (f_tab[i] - f_tab[i + 1]) * rng.gen() < pdf(x) {
+        if f_tab[i + 1] + (f_tab[i] - f_tab[i + 1]) * rng.gen::<f64>() < pdf(x) {
             return x;
         }
     }
diff --git a/src/librand/distributions/range.rs b/src/librand/distributions/range.rs
index 0f74e67f5a7..347d494259d 100644
--- a/src/librand/distributions/range.rs
+++ b/src/librand/distributions/range.rs
@@ -154,7 +154,7 @@ macro_rules! float_impl {
                 }
             }
             fn sample_range<R: Rng>(r: &Range<$ty>, rng: &mut R) -> $ty {
-                r.low + r.range * rng.gen()
+                r.low + r.range * rng.gen::<$ty>()
             }
         }
     }
diff --git a/src/test/auxiliary/lang-item-public.rs b/src/test/auxiliary/lang-item-public.rs
index 3b4547e31f5..3c416dc2ef8 100644
--- a/src/test/auxiliary/lang-item-public.rs
+++ b/src/test/auxiliary/lang-item-public.rs
@@ -32,3 +32,21 @@ extern fn eh_personality() {}
 pub trait Copy : PhantomFn<Self> {
     // Empty.
 }
+
+#[lang="rem"]
+pub trait Rem<RHS=Self> {
+    /// The resulting type after applying the `%` operator
+    #[stable(feature = "rust1", since = "1.0.0")]
+    type Output = Self;
+
+    /// The method for the `%` operator
+    #[stable(feature = "rust1", since = "1.0.0")]
+    fn rem(self, rhs: RHS) -> Self::Output;
+}
+
+impl Rem for i32 {
+    type Output = i32;
+
+    #[inline]
+    fn rem(self, other: i32) -> i32 { self % other }
+}
diff --git a/src/test/bench/noise.rs b/src/test/bench/noise.rs
index ff2428286d2..d6577036b8e 100644
--- a/src/test/bench/noise.rs
+++ b/src/test/bench/noise.rs
@@ -29,7 +29,7 @@ fn lerp(a: f32, b: f32, v: f32) -> f32 { a * (1.0 - v) + b * v }
 fn smooth(v: f32) -> f32 { v * v * (3.0 - 2.0 * v) }
 
 fn random_gradient<R: Rng>(r: &mut R) -> Vec2 {
-    let v = PI * 2.0 * r.gen();
+    let v = PI * 2.0 * r.gen::<f32>();
     Vec2 { x: v.cos(), y: v.sin() }
 }
 
diff --git a/src/test/run-pass/dst-raw.rs b/src/test/run-pass/dst-raw.rs
index c8f8218cc28..5e0e5bd03fe 100644
--- a/src/test/run-pass/dst-raw.rs
+++ b/src/test/run-pass/dst-raw.rs
@@ -56,7 +56,7 @@ pub fn main() {
     }
 
     // raw slice with explicit cast
-    let a = &[1, 2, 3] as *const [_];
+    let a = &[1, 2, 3] as *const [i32];
     unsafe {
         let b = (*a)[2];
         assert!(b == 3);
@@ -96,7 +96,7 @@ pub fn main() {
         assert!(len == 3);
     }
 
-    let a = &mut [1, 2, 3] as *mut [_];
+    let a = &mut [1, 2, 3] as *mut [i32];
     unsafe {
         let b = (*a)[2];
         assert!(b == 3);
diff --git a/src/test/run-pass/early-ret-binop-add.rs b/src/test/run-pass/early-ret-binop-add.rs
index b01d6523bf0..7bd292e66f2 100644
--- a/src/test/run-pass/early-ret-binop-add.rs
+++ b/src/test/run-pass/early-ret-binop-add.rs
@@ -10,5 +10,8 @@
 
 // pretty-expanded FIXME #23616
 
-fn wsucc(n: isize) -> isize { 0 + { return n + 1 } }
+use std::num::Int;
+
+fn wsucc<T:Int>(n: T) -> T { n + { return n } }
+
 pub fn main() { }
diff --git a/src/test/run-pass/issue-1460.rs b/src/test/run-pass/issue-1460.rs
index 6d2d02d2b8b..6e1cfc71862 100644
--- a/src/test/run-pass/issue-1460.rs
+++ b/src/test/run-pass/issue-1460.rs
@@ -12,5 +12,5 @@
 // pretty-expanded FIXME #23616
 
 pub fn main() {
-    {|i| if 1 == i { }};
+    {|i: u32| if 1 == i { }};
 }
diff --git a/src/test/run-pass/issue-16560.rs b/src/test/run-pass/issue-16560.rs
index 15a5080f5a2..33842fab698 100644
--- a/src/test/run-pass/issue-16560.rs
+++ b/src/test/run-pass/issue-16560.rs
@@ -17,7 +17,7 @@ use std::mem;
 
 fn main() {
     let y = 0u8;
-    let closure = move |x| y + x;
+    let closure = move |x: u8| y + x;
 
     // Check that both closures are capturing by value
     assert_eq!(1, mem::size_of_val(&closure));
diff --git a/src/test/run-pass/issue-21634.rs b/src/test/run-pass/issue-21634.rs
index 53297d0a8f3..fe540e1aabe 100644
--- a/src/test/run-pass/issue-21634.rs
+++ b/src/test/run-pass/issue-21634.rs
@@ -12,13 +12,13 @@
 // pretty-expanded FIXME #23616
 
 fn main() {
-    if let Ok(x) = "3.1415".parse() {
+    if let Ok(x) = "3.1415".parse::<f64>() {
         assert_eq!(false, x <= 0.0);
     }
-    if let Ok(x) = "3.1415".parse() {
+    if let Ok(x) = "3.1415".parse::<f64>() {
         assert_eq!(3.1415, x + 0.0);
     }
-    if let Ok(mut x) = "3.1415".parse() {
+    if let Ok(mut x) = "3.1415".parse::<f64>() {
         assert_eq!(8.1415, { x += 5.0; x });
     }
 }
diff --git a/src/test/run-pass/issue-8460.rs b/src/test/run-pass/issue-8460.rs
index 0ef668794ec..7d8c4ab210d 100644
--- a/src/test/run-pass/issue-8460.rs
+++ b/src/test/run-pass/issue-8460.rs
@@ -25,19 +25,19 @@ fn main() {
     assert!(thread::spawn(move|| { min_val::<i16>() / -1; }).join().is_err());
     assert!(thread::spawn(move|| { min_val::<i32>() / -1; }).join().is_err());
     assert!(thread::spawn(move|| { min_val::<i64>() / -1; }).join().is_err());
-    assert!(thread::spawn(move|| { 1isize / zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i8 / zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i16 / zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i32 / zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i64 / zero(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1isize / zero::<isize>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i8 / zero::<i8>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i16 / zero::<i16>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i32 / zero::<i32>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i64 / zero::<i64>(); }).join().is_err());
     assert!(thread::spawn(move|| { min_val::<isize>() % -1; }).join().is_err());
     assert!(thread::spawn(move|| { min_val::<i8>() % -1; }).join().is_err());
     assert!(thread::spawn(move|| { min_val::<i16>() % -1; }).join().is_err());
     assert!(thread::spawn(move|| { min_val::<i32>() % -1; }).join().is_err());
     assert!(thread::spawn(move|| { min_val::<i64>() % -1; }).join().is_err());
-    assert!(thread::spawn(move|| { 1isize % zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i8 % zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i16 % zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i32 % zero(); }).join().is_err());
-    assert!(thread::spawn(move|| { 1i64 % zero(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1isize % zero::<isize>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i8 % zero::<i8>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i16 % zero::<i16>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i32 % zero::<i32>(); }).join().is_err());
+    assert!(thread::spawn(move|| { 1i64 % zero::<i64>(); }).join().is_err());
 }
diff --git a/src/test/run-pass/reexported-static-methods-cross-crate.rs b/src/test/run-pass/reexported-static-methods-cross-crate.rs
index 374d0d8d9b9..3efd913cf54 100644
--- a/src/test/run-pass/reexported-static-methods-cross-crate.rs
+++ b/src/test/run-pass/reexported-static-methods-cross-crate.rs
@@ -19,8 +19,8 @@ use reexported_static_methods::Boz;
 use reexported_static_methods::Bort;
 
 pub fn main() {
-    assert_eq!(42, Foo::foo());
-    assert_eq!(84, Baz::bar());
+    assert_eq!(42_isize, Foo::foo());
+    assert_eq!(84_isize, Baz::bar());
     assert!(Boz::boz(1));
     assert_eq!("bort()".to_string(), Bort::bort());
 }